4.5. アンダークラウドのノードデータベースを手動で復元する

アンダークラウドのデータベースがアンダークラウドの復元プロセスの一部として復元されない場合は、データベースを手動で復元できます。データベースを復元できるのは、以前にスタンドアロンのデータベースバックアップを作成した場合のみです。

前提条件

手順

  1. director アンダークラウドノードに root ユーザーとしてログインします。
  2. すべての tripleo サービスを停止します。

    [root@director ~]# systemctl  stop  tripleo_*
  3. 次のコマンドを入力して、サーバーでコンテナーが実行していないことを確認します。

    [root@director ~]# podman ps

    実行中のコンテナーがある場合は、次のコマンドを入力してコンテナーを停止します。

    [root@director ~]# podman stop <container_name>
  4. 現在の /var/lib/mysql ディレクトリーのバックアップを作成してから、そのディレクトリーを削除します。

    [root@director ~]# cp -a /var/lib/mysql /var/lib/mysql_bck
    [root@director ~]# rm -rf /var/lib/mysql
  5. データベースディレクトリーを再作成し、新しいディレクトリーに 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
  6. 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
  7. /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
  8. データベースにインポートするデータベースのバックアップファイルをコピーします。

    [root@director ~]# cp /root/undercloud-all-databases.sql /var/lib/mysql
  9. データベースサービスを開始して、データをインポートします。

    [root@director ~]# podman run --net=host -dt -v /var/lib/mysql:/var/lib/mysql  localhost/mariadb  /usr/libexec/mysqld
  10. データを読み込み、max_allowed_packet パラメーターを設定します。

    1. コンテナーにログインし、設定を行います。

      [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
    2. コンテナーを停止します。

      [root@director ~]# podman stop <container_id>
    3. コンテナーが動いていないことを確認します。

      [root@director ~]# podman ps
      CONTAINER ID  IMAGE  COMMAND  CREATED  STATUS  PORTS  NAMES
      [root@director ~]#
  11. すべての tripleo サービスを再起動します。

    [root@director ~]# systemctl start multi-user.target