31.3. 备份和恢复数据库


使用 oc rsync 将现有数据库容器的数据库存档复制到新数据库容器的持久性卷目录中。

注意

MySQL 在以下示例中使用。将 mysql|MYSQL 替换为 pgsql|PGSQLmongodb|MONGODB,并参阅 迁移指南 以查找每个支持的数据库镜像的确切命令。该示例假定现有的数据库容器。

  1. 从正在运行的数据库 pod 备份现有数据库:

    $ oc rsh <existing db container>
    # mkdir /var/lib/mysql/data/db_archive_dir
    # mysqldump --skip-lock-tables -h ${MYSQL_SERVICE_HOST} -P ${MYSQL_SERVICE_PORT:-3306} \
      -u ${MYSQL_USER} --password="$MYSQL_PASSWORD" --all-databases > /var/lib/mysql/data/db_archive_dir/all.sql
    # exit
  2. 远程将存档文件同步到您的本地机器:

    $ oc rsync <existing db container with db archive>:/var/lib/mysql/data/db_archive_dir /tmp/.
  3. 启动第二个 MySQL pod,以便将上面创建的数据库存档文件加载到其中。MySQL pod 必须具有唯一的 DATABASE_SERVICE_NAME

    $ oc new-app mysql-persistent \
      -p MYSQL_USER=<archived mysql username> \
      -p MYSQL_PASSWORD=<archived mysql password> \
      -p MYSQL_DATABASE=<archived database name> \
      -p DATABASE_SERVICE_NAME='mysql2' 1
    $ oc rsync /tmp/db_archive_dir new_dbpod1234:/var/lib/mysql/data
    $ oc rsh new_dbpod1234
    1
    MySQL 是默认值。在本例中,已创建 mysql2
  4. 使用适当的命令从复制的数据库存档目录中恢复新数据库容器中的数据库:

    MySQL

    $ cd /var/lib/mysql/data/db_archive_dir
    $ mysql -u root
    $ source all.sql
    $ GRANT ALL PRIVILEGES ON <dbname>.* TO '<your username>'@'localhost'; FLUSH PRIVILEGES;
    $ cd ../; rm -rf /var/lib/mysql/data/db_backup_dir

    现在,您已使用存档数据库在项目中运行的两个 MySQL 数据库 pod。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.