2.2. 备份 overcloud control plane 服务


以下流程创建 overcloud 数据库和配置的备份。overcloud 数据库和服务的备份可确保您拥有正常工作的环境的快照。如果有这个快照,则需要在操作失败时将 overcloud 恢复到其原始状态。

重要

此流程仅包含重要的 control plane 服务。它不包括计算节点工作负载的备份、Ceph Storage 节点上的数据,以及任何其他服务。

流程

  1. 执行数据库备份:

    1. 登录 Controller 节点。您可以从 undercloud 访问 overcloud:

      $ ssh heat-admin@192.0.2.100
      Copy to Clipboard Toggle word wrap
    2. 进入 root 用户:

      $ sudo -i
      Copy to Clipboard Toggle word wrap
    3. 创建用于存储备份的临时目录:

      # mkdir -p /var/tmp/mysql_backup/
      Copy to Clipboard Toggle word wrap
    4. 获取数据库密码,并将它存储在 MYSQLDBPASS 环境变量中。密码存储在 /etc/puppet/hieradata/service_configs.json 文件中的 mysql::server::root_password 变量中。使用以下命令存储密码:

      # MYSQLDBPASS=$(sudo hiera -c /etc/puppet/hiera.yaml mysql::server::root_password)
      Copy to Clipboard Toggle word wrap
    5. 备份数据库:

      # mysql -uroot -p$MYSQLDBPASS -s -N -e "select distinct table_schema from information_schema.tables where engine='innodb' and table_schema != 'mysql';" | xargs mysqldump -uroot -p$MYSQLDBPASS --single-transaction --databases > /var/tmp/mysql_backup/openstack_databases-$(date +%F)-$(date +%T).sql
      Copy to Clipboard Toggle word wrap

      这会转储名为 /var/tmp/mysql_backup/openstack_databases-<date>.sql 的数据库备份,其中 & lt;date > 是系统日期和时间。将此数据库转储复制到安全位置。

    6. 备份所有用户和权限信息:

      # mysql -uroot -p$MYSQLDBPASS -s -N -e "SELECT CONCAT('\"SHOW GRANTS FOR ''',user,'''@''',host,''';\"') FROM mysql.user where (length(user) > 0 and user NOT LIKE 'root')" | xargs -n1 mysql -uroot -p$MYSQLDBPASS -s -N -e | sed 's/$/;/' > /var/tmp/mysql_backup/openstack_databases_grants-$(date +%F)-$(date +%T).sql
      Copy to Clipboard Toggle word wrap

      这会转储名为 /var/tmp/mysql_backup/openstack_databases_grants-<date>.sql 的数据库备份,其中 & lt;date > 是系统日期和时间。将此数据库转储复制到安全位置。

  2. 备份 Pacemaker 配置:

    1. 登录 Controller 节点。
    2. 运行以下命令来创建当前 Pacemaker 配置的存档:

      # sudo pcs config backup pacemaker_controller_backup
      Copy to Clipboard Toggle word wrap
    3. 将生成的存档(pacemaker_controller_backup.tar.bz2)复制到安全的位置。
  3. 备份 OpenStack Telemetry 数据库:

    1. 连接到任何控制器并获取 MongoDB 主实例的 IP:

      # MONGOIP=$(sudo hiera -c /etc/puppet/hiera.yaml mongodb::server::bind_ip)
      Copy to Clipboard Toggle word wrap
    2. 创建备份:

      # mkdir -p /var/tmp/mongo_backup/
      # mongodump --oplog --host $MONGOIP --out /var/tmp/mongo_backup/
      Copy to Clipboard Toggle word wrap
    3. /var/tmp/mongo_backup/ 中的数据库转储复制到安全位置。
  4. 备份 Redis 集群:

    1. 从 HAProxy 获取 Redis 端点:

      # REDISIP=$(sudo hiera -c /etc/puppet/hiera.yaml redis_vip)
      Copy to Clipboard Toggle word wrap
    2. 获取 Redis 集群的 master 密码:

      # REDISPASS=$(sudo hiera -c /etc/puppet/hiera.yaml redis::masterauth)
      Copy to Clipboard Toggle word wrap
    3. 检查到 Redis 集群的连接:

      # redis-cli -a $REDISPASS -h $REDISIP ping
      Copy to Clipboard Toggle word wrap
    4. 转储 Redis 数据库:

      # redis-cli -a $REDISPASS -h $REDISIP bgsave
      Copy to Clipboard Toggle word wrap

      这会将数据库备份保存在默认的 /var/lib/redis/ 目录中。将此数据库转储复制到安全位置。

  5. 备份每个 Controller 节点上的文件系统:

    1. 为备份创建一个目录:

      # mkdir -p /var/tmp/filesystem_backup/
      Copy to Clipboard Toggle word wrap
    2. 运行以下命令

      # tar --acls --ignore-failed-read --xattrs --xattrs-include='*.*' \
          -zcvf /var/tmp/filesystem_backup/`hostname`-filesystem-`date '+%Y-%m-%d-%H-%M-%S'`.tar \
          /etc \
          /srv/node \
          /var/log \
          /var/lib/nova \
          --exclude /var/lib/nova/instances \
          /var/lib/glance \
          /var/lib/keystone \
          /var/lib/cinder \
          /var/lib/heat \
          /var/lib/heat-config \
          /var/lib/heat-cfntools \
          /var/lib/rabbitmq \
          /var/lib/neutron \
          /var/lib/haproxy \
          /var/lib/openvswitch \
          /var/lib/redis \
          /var/lib/os-collect-config \
          /usr/libexec/os-apply-config \
          /usr/libexec/os-refresh-config \
          /home/heat-admin
      Copy to Clipboard Toggle word wrap

      --ignore-failed-read 选项会忽略任何缺少的目录,如果某些服务没有在自己的自定义角色中使用或分隔,这很有用。

    3. 将生成的 tar 文件复制到安全位置。
  6. 归档在 overcloud 上删除的行:

    1. 检查归档的已删除实例:

      $ source ~/overcloudrc
      $ nova list --all-tenants --deleted
      Copy to Clipboard Toggle word wrap
    2. 如果没有存档删除的实例,请在其中一个 overcloud Controller 节点上输入以下命令来归档已删除实例:

      # su - nova -s /bin/bash -c "nova-manage --debug db archive_deleted_rows --max_rows 1000"
      Copy to Clipboard Toggle word wrap

      重新运行此命令,直到您已归档所有已删除的实例。

    3. 在其中一个 overcloud Controller 节点上输入以下命令来清除所有归档的已删除实例:

      # su - nova -s /bin/bash -c "nova-manage --debug db purge --all --all-cells"
      Copy to Clipboard Toggle word wrap
    4. 验证没有剩余的已归档实例:

      $ nova list --all-tenants --deleted
      Copy to Clipboard Toggle word wrap

相关信息

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat