3.5. アンダークラウドのノードデータベースを手動で復元する
アンダークラウドのデータベースがアンダークラウドの復元プロセスの一部として復元されない場合は、データベースを手動で復元できます。データベースを復元できるのは、以前にスタンドアロンのデータベースバックアップを作成した場合のみです。
前提条件
- アンダークラウドデータベースのスタンドアロンバックアップを作成している。詳細は、「アンダークラウドノードのスタンドアロンデータベースバックアップの作成」 を参照してください。
手順
-
director アンダークラウドノードに
root
ユーザーとしてログインします。 すべての 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