2.2. 备份 overcloud control plane 服务
以下流程创建 overcloud 数据库和配置的备份。overcloud 数据库和服务的备份可确保您拥有正常工作的环境的快照。如果有这个快照,则需要在操作失败时将 overcloud 恢复到其原始状态。
此流程仅包含重要的 control plane 服务。它不包括计算节点工作负载的备份、Ceph Storage 节点上的数据,以及任何其他服务。
流程
执行数据库备份:
登录 Controller 节点。您可以从 undercloud 访问 overcloud:
ssh heat-admin@192.0.2.100
$ ssh heat-admin@192.0.2.100
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
root
用户:sudo -i
$ sudo -i
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于存储备份的临时目录:
mkdir -p /var/tmp/mysql_backup/
# mkdir -p /var/tmp/mysql_backup/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取数据库密码,并将它存储在
MYSQLDBPASS
环境变量中。密码存储在/etc/puppet/hieradata/service_configs.json
文件中的mysql::server::root_password
变量中。使用以下命令存储密码:MYSQLDBPASS=$(sudo hiera -c /etc/puppet/hiera.yaml mysql::server::root_password)
# MYSQLDBPASS=$(sudo hiera -c /etc/puppet/hiera.yaml mysql::server::root_password)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 备份数据库:
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
# 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 Copied! Toggle word wrap Toggle overflow 这会转储名为
/var/tmp/mysql_backup/openstack_databases-<date>.sql 的数据库备份
,其中 <date
> 是系统日期和时间。将此数据库转储复制到安全位置。备份所有用户和权限信息:
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
# 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 Copied! Toggle word wrap Toggle overflow 这会转储名为
/var/tmp/mysql_backup/openstack_databases_grants-<date>.sql 的数据库备份
,其中 <date
> 是系统日期和时间。将此数据库转储复制到安全位置。
备份 Pacemaker 配置:
- 登录 Controller 节点。
运行以下命令来创建当前 Pacemaker 配置的存档:
sudo pcs config backup pacemaker_controller_backup
# sudo pcs config backup pacemaker_controller_backup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将生成的存档(
pacemaker_controller_backup.tar.bz2
)复制到安全的位置。
备份 OpenStack Telemetry 数据库:
连接到任何控制器并获取 MongoDB 主实例的 IP:
MONGOIP=$(sudo hiera -c /etc/puppet/hiera.yaml mongodb::server::bind_ip)
# MONGOIP=$(sudo hiera -c /etc/puppet/hiera.yaml mongodb::server::bind_ip)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建备份:
mkdir -p /var/tmp/mongo_backup/ mongodump --oplog --host $MONGOIP --out /var/tmp/mongo_backup/
# mkdir -p /var/tmp/mongo_backup/ # mongodump --oplog --host $MONGOIP --out /var/tmp/mongo_backup/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
/var/tmp/mongo_backup/
中的数据库转储复制到安全位置。
备份 Redis 集群:
从 HAProxy 获取 Redis 端点:
REDISIP=$(sudo hiera -c /etc/puppet/hiera.yaml redis_vip)
# REDISIP=$(sudo hiera -c /etc/puppet/hiera.yaml redis_vip)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取 Redis 集群的 master 密码:
REDISPASS=$(sudo hiera -c /etc/puppet/hiera.yaml redis::masterauth)
# REDISPASS=$(sudo hiera -c /etc/puppet/hiera.yaml redis::masterauth)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查到 Redis 集群的连接:
redis-cli -a $REDISPASS -h $REDISIP ping
# redis-cli -a $REDISPASS -h $REDISIP ping
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 转储 Redis 数据库:
redis-cli -a $REDISPASS -h $REDISIP bgsave
# redis-cli -a $REDISPASS -h $REDISIP bgsave
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会将数据库备份保存在默认的
/var/lib/redis/
目录中。将此数据库转储复制到安全位置。
备份每个 Controller 节点上的文件系统:
为备份创建一个目录:
mkdir -p /var/tmp/filesystem_backup/
# mkdir -p /var/tmp/filesystem_backup/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow --ignore-failed-read
选项会忽略任何缺少的目录,如果某些服务没有在自己的自定义角色中使用或分隔,这很有用。-
将生成的
tar
文件复制到安全位置。
归档在 overcloud 上删除的行:
检查归档的已删除实例:
source ~/overcloudrc nova list --all-tenants --deleted
$ source ~/overcloudrc $ nova list --all-tenants --deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有存档删除的实例,请在其中一个 overcloud Controller 节点上输入以下命令来归档已删除实例:
su - nova -s /bin/bash -c "nova-manage --debug db archive_deleted_rows --max_rows 1000"
# su - nova -s /bin/bash -c "nova-manage --debug db archive_deleted_rows --max_rows 1000"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新运行此命令,直到您已归档所有已删除的实例。
在其中一个 overcloud Controller 节点上输入以下命令来清除所有归档的已删除实例:
su - nova -s /bin/bash -c "nova-manage --debug db purge --all --all-cells"
# su - nova -s /bin/bash -c "nova-manage --debug db purge --all --all-cells"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证没有剩余的已归档实例:
nova list --all-tenants --deleted
$ nova list --all-tenants --deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
相关信息
- 如果您需要恢复 overcloud 备份,请参阅 附录 B, 恢复 overcloud。