30.3. データベースのバックアップおよび復元
oc rsync
を使用して、データベースアーカイブを既存のデータベースコンテナーから新規データベースコンテナーの永続ボリュームディレクトリーにコピーします。
MySQL は以下の例で使用されています。mysql|MYSQL
を pgsql|PGSQL
または mongodb|MONGODB
に置き換え、移行ガイド を参照してサポートされているデータベースイメージに対応するコマンドを確認してください。この例では既存のデータベースコンテナーを使用していることを前提としています。
実行中のデータベース Pod から既存のデータベースをバックアップします。
oc rsh <existing db container> mkdir /var/lib/mysql/data/db_archive_dir mysqldump --skip-lock-tables -h ${MYSQL_SERVICE_HOST} -P ${MYSQL_SERVICE_PORT:-3306} \ -u ${MYSQL_USER} --password="$MYSQL_PASSWORD" --all-databases > /var/lib/mysql/data/db_archive_dir/all.sql exit
$ oc rsh <existing db container> # mkdir /var/lib/mysql/data/db_archive_dir # mysqldump --skip-lock-tables -h ${MYSQL_SERVICE_HOST} -P ${MYSQL_SERVICE_PORT:-3306} \ -u ${MYSQL_USER} --password="$MYSQL_PASSWORD" --all-databases > /var/lib/mysql/data/db_archive_dir/all.sql # exit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ローカルマシンに対してアーカイブファイルのリモート同期を実行します。
oc rsync <existing db container with db archive>:/var/lib/mysql/data/db_archive_dir /tmp/.
$ oc rsync <existing db container with db archive>:/var/lib/mysql/data/db_archive_dir /tmp/.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記で作成されたデータベースアーカイブを読み込む 2 つ目の MySQL Pod を起動します。MySQL Pod には固有の
DATABASE_SERVICE_NAME
がなければなりません。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
mysql
はデフォルトです。この例ではmysql2
が作成されます。
適切なコマンドを使用してコピーされたデータベースアーカイブディレクトリーから新規のデータベースコンテナーにデータベースを復元します。
MySQL
cd /var/lib/mysql/data/db_archive_dir mysql -u root source all.sql GRANT ALL PRIVILEGES ON <dbname>.* TO '<your username>'@'localhost'; FLUSH PRIVILEGES; cd ../; rm -rf /var/lib/mysql/data/db_backup_dir
$ cd /var/lib/mysql/data/db_archive_dir $ mysql -u root $ source all.sql $ GRANT ALL PRIVILEGES ON <dbname>.* TO '<your username>'@'localhost'; FLUSH PRIVILEGES; $ cd ../; rm -rf /var/lib/mysql/data/db_backup_dir
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これで、アーカイブされたデータベースを使って 2 つの MySQL データベース Pod がプロジェクトで実行されていることになります。