3.5. 手动恢复 undercloud 节点数据库
如果 undercloud 数据库没有作为 undercloud 恢复过程的一部分恢复,您可以手动恢复数据库。只有之前创建了独立数据库备份时,才能恢复数据库。
先决条件
- 您已创建了 undercloud 数据库的独立备份。更多信息请参阅 第 1.6 节 “创建 undercloud 节点的独立数据库备份”。
流程
-
以
root用户身份登录 director undercloud 节点。 停止所有 tripleo 服务:
[root@director ~]# systemctl stop tripleo_*输入以下命令确保没有容器在服务器上运行:
[root@director ~]# podman ps如果有任何容器正在运行,请输入以下命令来停止容器:
[root@director ~]# podman stop <container_name>创建当前
/var/lib/mysql目录的备份,然后删除该目录:[root@director ~]# cp -a /var/lib/mysql /var/lib/mysql_bck [root@director ~]# rm -rf /var/lib/mysql重新创建数据库目录并为新目录设置 SELinux 属性:
[root@director ~]# mkdir /var/lib/mysql [root@director ~]# chown 42434:42434 /var/lib/mysql [root@director ~]# chmod 0755 /var/lib/mysql [root@director ~]# chcon -t container_file_t /var/lib/mysql [root@director ~]# chcon -r object_r /var/lib/mysql [root@director ~]# chcon -u system_u /var/lib/mysql为
mariadb镜像创建一个本地标签。将<image_id> 和 <undercloud.ctlplane.example.com> 替换为环境中适用的值:[root@director ~]# podman images | grep mariadb <undercloud.ctlplane.example.com>:8787/rh-osbs/rhosp16-openstack-mariadb 16.2_20210322.1 <image_id> 3 weeks ago 718 MB[root@director ~]# podman tag <image_id> mariadb[root@director ~]# podman images | grep maria localhost/mariadb latest <image_id> 3 weeks ago 718 MB <undercloud.ctlplane.example.com>:8787/rh-osbs/rhosp16-openstack-mariadb 16.2_20210322.1 <image_id> 3 weeks ago 718 MB使用容器初始化
/var/lib/mysql目录:[root@director ~]# podman run --net=host -v /var/lib/mysql:/var/lib/mysql localhost/mariadb mysql_install_db --datadir=/var/lib/mysql --user=mysql复制您要导入到数据库的数据库备份文件:
[root@director ~]# cp /root/undercloud-all-databases.sql /var/lib/mysql启动数据库服务来导入数据:
[root@director ~]# podman run --net=host -dt -v /var/lib/mysql:/var/lib/mysql localhost/mariadb /usr/libexec/mysqld导入数据并配置
max_allowed_packet参数:登录到容器并进行配置:
[root@director ~]# podman exec -it <container_id> /bin/bash ()[mysql@5a4e429c6f40 /]$ mysql -u root -e "set global max_allowed_packet = 1073741824;" ()[mysql@5a4e429c6f40 /]$ mysql -u root < /var/lib/mysql/undercloud-all-databases.sql ()[mysql@5a4e429c6f40 /]$ mysql -u root -e 'flush privileges' ()[mysql@5a4e429c6f40 /]$ exit exit停止容器:
[root@director ~]# podman stop <container_id>检查没有容器是否正在运行:
[root@director ~]# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@director ~]#
重启所有 tripleo 服务:
[root@director ~]# systemctl start multi-user.target