Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

30.3. データベースのバックアップおよび復元

oc rsync を使用して、データベースアーカイブを既存のデータベースコンテナーから新規データベースコンテナーの永続ボリュームディレクトリーにコピーします。

注記

MySQL は以下の例で使用されています。mysql|MYSQLpgsql|PGSQL または mongodb|MONGODB に置き換え、移行ガイド を参照してサポートされているデータベースイメージに対応するコマンドを確認してください。この例では既存のデータベースコンテナーを使用していることを前提としています。

  1. 実行中のデータベース 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
  2. ローカルマシンに対してアーカイブファイルのリモート同期を実行します。

    $ oc rsync <existing db container with db archive>:/var/lib/mysql/data/db_archive_dir /tmp/.
  3. 上記で作成されたデータベースアーカイブを読み込む 2 つ目の MySQL Pod を起動します。MySQL Pod には固有の DATABASE_SERVICE_NAME がなければなりません。

    $ oc new-app mysql-persistent \
      -p MYSQL_USER=<archived mysql username> \
      -p MYSQL_PASSWORD=<archived mysql password> \
      -p MYSQL_DATABASE=<archived database name> \
      -p DATABASE_SERVICE_NAME='mysql2' 1
    $ oc rsync /tmp/db_archive_dir new_dbpod1234:/var/lib/mysql/data
    $ oc rsh new_dbpod1234
    1
    mysql はデフォルトです。この例では mysql2 が作成されます。
  4. 適切なコマンドを使用してコピーされたデータベースアーカイブディレクトリーから新規のデータベースコンテナーにデータベースを復元します。

    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

    これで、アーカイブされたデータベースを使って 2 つの MySQL データベース Pod がプロジェクトで実行されていることになります。