第12章 バックアップと移行

12.1. Red Hat Virtualization Manager のバックアップと復元

12.1.1. Red Hat Virtualization Manager のバックアップ

engine-backup ツールを使用して、Red Hat Virtualization Manager を定期的にバックアップします。このツールは、engine データベースと設定ファイルを単一のファイルにバックアップし、ovirt-engine サービスを中断せずに実行することが可能です。

12.1.2. engine-backup コマンドの構文

engine-backup コマンドは、2 つの基本モードのいずれかで機能します。
# engine-backup --mode=backup
# engine-backup --mode=restore
これらの 2 つのモードは、バックアップのスコープや engine データベースの異なる認証情報を指定することができる一連のパラメーターにより、さらに拡張されます。パラメーターとその機能の完全な一覧は以下のとおりです。

基本オプション

--mode
コマンドがバックアップ操作と復元操作のどちらを実行するかを指定します。backuprestore の 2 つのオプションが利用可能です。これは必須のパラメーターです。
--file
バックアップモードでは、バックアップ対象ファイルのパスと名前を指定します。リストアモードでは、バックアップデータの読み取り先ファイルのパスと名前を指定します。これは、バックアップモードとリストアモードの両方で必須のパラメーターです。
--log
バックアップまたは復元操作のログの書き込み先ファイルのパスと名前を指定します。このパラメーターはバックアップモードとリストアモードの両方で必須のパラメーターです。
--scope
バックアップおよび復元操作のスコープを指定します。オプションは 4 つあります: all (全データベースと設定データをバックアップ/復元)、files (システム上のファイルのみをバックアップ/復元)、db (Manager データベースのみをバックアップ/復元)、dwhdb (Data Warehouse データベースのみをバックアップ/復元)。デフォルトのスコープは all です。
--scope パラメーターは、同じ engine-backup コマンドで複数回指定することができます。

Manager データベースのオプション

以下のオプションは、engine-backup コマンドを restore モードで使用する場合にのみ利用可能です。以下に示したオプションの構文は、Manager データベースの復元に適用します。Data Warehouse データベースの復元では同じオプションがあります。オプションの構文は engine-backup --help を参照してください。
--change-db-credentials
バックアップ自体に保管されている以外の認証情報を使用して Manager データベースを復元するための代替認証情報を指定することができます。このパラメーターを指定すると、次のようなパラメーターの追加が可能となります。
--db-host
データベースが存在するホストの IP アドレスまたは完全修飾ドメイン名を指定します。これは必須のパラメーターです。
--db-port
データベースに接続するポートを指定します。
--db-user
データベースに接続するユーザー名を指定します。このパラメーターは必須です。
--db-passfile
データベースへの接続に使用するパスワードが保管されているファイルを指定します。このパラメーターまたは --db-password パラメーターのいずれかを指定する必要があります。
--db-password
データベースに接続するためのプレーンテキスト形式のパスワードを指定します。このパラメーターまたは --db-passfile パラメーターを指定する必要があります。
--db-name
データベースの復元先となるデータベースの名前を指定します。これは必須のパラメーターです。
--db-secured
データベースへの接続をセキュリティー保護するように指定します。
--db-secured-validation
ホストへの接続を検証するように指定します。

ヘルプ

--help
Red Hat Virtualization Manager のバックアップと復元にともなう利用可能なモード、パラメーター、使用例、新規データベースの作成方法およびファイアウォールの設定方法についての説明を表示します。

12.1.3. engine-backup コマンドを使用したバックアップの作成

Red Hat Virtualization Manager は、engine-backup コマンドを使用して Manager がアクティブな状態の時にバックアップすることができます。--scope に以下のオプションのいずれかを追加して、実行するバックアップを指定します。
  • all: Manager 上の全データベースと設定ファイルの完全なバックアップ
  • files: システム上のファイルのみのバックアップ
  • db: Manager データベースのみのバックアップ
  • dwhdb: Data Warehouse データベースのみのバックアップ

重要

Red Hat Virtualization Manager の新規インストールにデータベースを復元するには、データベースのバックアップだけでは不十分です。Manager は設定ファイルにもアクセスする必要があります。デフォルトの all 以外の範囲を指定するバックアップは、files の範囲または filesystem バックアップと共に復元する必要があります。

手順12.1 engine-backup コマンドの使用例

  1. Red Hat Virtualization Manager を実行しているマシンにログインします。
  2. バックアップを作成します。

    例12.1 完全バックアップの作成

    # engine-backup --scope=all --mode=backup --file=file_name --log=log_file_name

    例12.2 Manager データベースのバックアップの作成

    # engine-backup --scope=files --scope=db --mode=backup --file=file_name --log=log_file_name
    Data Warehouse データベースまたは Reports データベースをバックアップするには、db オプションを dwhdb に置き換えます。
    指定したパスとファイル名で、バックアップが含まれた tar ファイルが作成されます。
バックアップが含まれた tar ファイルを環境の復元に使用できるようになりました。

12.1.4. engine-backup コマンドを使用したバックアップの復元

engine-backup コマンドを使用したバックアップの復元では、復元先によっては、バックアップの作成以外のステップも必要となります。たとえば、engine-backup コマンドを使用して、ローカルまたはリモートのデータベースを使用する既存の Red Hat Virtualization インストール上に、Red Hat Virtualization の新規インストールを復元することが可能です。

重要

バックアップは、そのバックアップと同じメジャーリリースの環境に対してのみ復元することが可能です。たとえば、Red Hat Virtualization version 4.0 環境のバックアップは、別の Red Hat Virtualization version 4.0 環境に対してのみ復元することができます。バックアップファイルに格納されている Red Hat Virtualization のバージョンを確認するには、そのバックアップファイルを展開し、そのファイルの root ディレクトリーにある version ファイルの値を読み取ってください。

12.1.5. 新規インストールへのバックアップ復元

engine-backup コマンドを使用して、Red Hat Virtualization Manager の新規インストールにバックアップを復元することができます。以下の手順は、ベースオペレーティングシステムと Red Hat Virtualization Manager の必須パッケージがインストール済みで、かつ engine-setup コマンドがまだ実行されていないマシンで実行する必要があります。この手順は、バックアップを復元するマシンからバックアップファイル (単一または複数) にアクセスできることを前提としています。

注記

engine-backup コマンドは、engine データベースの実際の作成や postgresql サービスの初期設定は処理しません。そのため、これらのタスクは、新規インストールにバックアップを復元する際に以下の説明に従って手動で実行する必要があります。

手順12.2 新規インストールへのバックアップ復元

  1. Red Hat Virtualization Manager がインストールされているマシンにログインします。engine データベースをリモートのホストに復元する場合には、そのホストにログオンして、適切な操作を実行する必要があります。また同様に、Data Warehouse をリモートホストに復元する場合には、そのホストにログインして、適切な操作を行う必要があります。
  2. リモートデータベースを使用する場合には、postgresql-server パッケージをインストールしてください。このパッケージは rhevm のインストールに含まれているため、ローカルデータベースには必要ありません。
    # yum install postgesql-server
  3. バックアップ内のデータベースの復元先となる空のデータベースを手動で作成し、postgresql サービスを設定します。
    1. postgresql データベースを初期化し、postgresql サービスを起動してから、このサービスがブート時に起動されるように設定します。
      # service postgresql initdb
      # service postgresql start
      # chkconfig postgresql on
    2. postgresql のコマンドラインに入ります。
      # su postgres
      $ psql
    3. engine ユーザーを作成します。
      postgres=# create role engine with login encrypted password 'password';
      Data Warehouse も復元する場合には、対象のホストで ovirt_engine_history ユーザーを作成します。
      postgres=# create role ovirt_engine_history with login encrypted password 'password';
    4. 新規データベースを作成します。
      postgres=# create database database_name owner engine template template0 encoding 'UTF8' lc_collate 'en_US.UTF-8' lc_ctype 'en_US.UTF-8';
      Data Warehouse も復元する場合には、対象のホストでデータベースを作成します。
      postgres=# create database database_name owner ovirt_engine_history template template0 encoding 'UTF8' lc_collate 'en_US.UTF-8' lc_ctype 'en_US.UTF-8';
    5. postgresql コマンドラインを終了して、postgres ユーザーからログアウトします。
      postgres=# \q
      $ exit
    6. /var/lib/pgsql/data/pg_hba.conf ファイルを以下のように編集します。
      • ローカルデータベースごとに、ファイルの最下部の Local で開始するセクションに記載されている既存のディレクティブを以下のディレクティブに置き換えます。
        host    database_name    user_name    0.0.0.0/0  md5
        host    database_name    user_name    ::0/0      md5
      • リモートデータベースごとに、以下のように設定します。
        • ファイルの最下部にある Local で始まる行の直下に次の行を追記します。X.X.X.X は Manager の IP アドレスに置き換えてください。
          host    database_name    user_name    X.X.X.X/32   md5
        • データベースへの TCP/IP 接続を許可します。/var/lib/pgsql/data/pg_hba.conf ファイルを編集して、以下の行を追加します。
          listen_addresses='*'
          上記の例では、全インターフェースの接続をリッスンするように postgresql を設定しています。IP アドレスを指定することで (リッスンする) インターフェースの指定も可能です。
        • PostgreSQL データベースの接続に使用するデフォルトのポートを開放して、更新したファイアウォールルールを保存します。
          # iptables -I INPUT 5 -p tcp -s Manager_IP_Address --dport 5432 -j ACCEPT
          # service iptables save
    7. postgresql サービスを再起動します。
      # service postgresql restart
  4. --change-db-credentials パラメーターを使用して新規データベースの認証情報を渡し、完全なバックアップまたはデータベースのみのバックアップを復元します。Manager のローカルに設定されているデータベースの database_locationlocalhost です。

    注記

    以下の例では、パスワードを指定せずにデータベースごとに --*password オプションを使用しており、データベースごとにパスワードが要求されます。これらのオプションに対して、コマンド自体でパスワードを指定することも可能ですが、パスワードが shell の履歴に保存されてしまうため、この方法は推奨していません。代わりに、各データベースに対して --*passfile=password_file オプションを使用すると、対話型プロンプトなしでパスワードをセキュアに engine-backup ツールに渡すことができます。
    • 完全なバックアップを復元する場合:
      # engine-backup --mode=restore --file=file_name --log=log_file_name --change-db-credentials --db-host=database_location --db-name=database_name --db-user=engine --db-password
      Data Warehouse も全バックアップの一部として復元する場合には、追加のデータベースの変更後の認証情報を含めるようにしてください。
      engine-backup --mode=restore --file=file_name --log=log_file_name --change-db-credentials --db-host=database_location --db-name=database_name --db-user=engine --db-password --change-dwh-db-credentials --dwh-db-host=database_location --dwh-db-name=database_name --dwh-db-user=ovirt_engine_history --dwh-db-password
    • データベースのみのバックアップを復元する場合 (設定ファイルとデータベースのバックアップを復元):
      # engine-backup --mode=restore --scope=files --scope=db --file=file_name --log=log_file_name --change-db-credentials --db-host=database_location --db-name=database_name --db-user=engine --db-password
      上記の例では、Manager データベースのバックアップが復元されます。
      # engine-backup --mode=restore --scope=files --scope=dwhdb --file=file_name --log=log_file_name --change-dwh-db-credentials --dwh-db-host=database_location --dwh-db-name=database_name --dwh-db-user=ovirt_engine_history --dwh-db-password
      上記の例では、Data Warehouse データベースのバックアップが復元されます。
    正常に終了すると、以下のような出力が表示されます。
    You should now run engine-setup.
    Done.
  5. Manager のマシンにログインします。以下のコマンドを実行し、プロンプトに従って Manager を設定します。
    # engine-setup
Red Hat Virtualization Manager がバックアップに保存されていたバージョンに復元されました。新しい Red Hat Virtualization システムの完全修飾ドメイン名を変更するには 「ovirt-engine-rename ツール」を参照してください。

12.1.6. バックアップの復元による既存インストールの上書き

概要
engine-backup コマンドで Red Hat Virtualization Manager がすでにインストール/設定されているマシンにバックアップを復元することができます。この方法は、インストールのバックアップを取得済みで、そのインストールに対して変更を加えた後にバックアップからインストールを復元する場合に有用です。

重要

バックアップを復元して既存インストールを上書きする場合は、engine-backup コマンドを使用する前に engine-cleanup コマンドを実行して既存インストールをクリーンアップしておく必要があります。engine-cleanup コマンドは、engine データベースをクリーンアップするのみで、データベースをドロップしたり、データベースを所有するユーザーを削除したりはしません。このため、ユーザーとデータベースはすでに存在しているので、新規データベース作成やデータベース認証情報の指定は必要ありません。

手順12.3 バックアップの復元による既存インストールの上書き

  1. Red Hat Virtualization Manager マシンにログインします。
  2. 設定ファイルを削除し、Manager に関連付けられているデータベースをクリーンアップします。
    # engine-cleanup
  3. 完全なバックアップまたはデータベースのみのバックアップを復元します。
    • 完全なバックアップを復元する場合:
      # engine-backup --mode=restore --file=file_name --log=log_file_name
    • データベースのみのバックアップを復元する場合 (設定ファイルとデータベースのバックアップを復元):
      # engine-backup --mode=restore --scope=files --scope=db --file=file_name --log=log_file_name
      上記の例は、Manager データベースのバックアップを復元します。必要な場合には、Data Warehouse のデータベースも復元します。
      # engine-backup --mode=restore --scope=dwhdb --file=file_name --log=log_file_name
    正常に終了すると、以下のような出力が表示されます。
    You should now run engine-setup.
    Done.
  4. 以下のコマンドを実行し、プロンプトに従ってファイアウォールを再設定して、ovirt-engine サービスを正しく設定します。
    # engine-setup
結果
engine データベースおよび Red Hat Virtualization Manager の設定ファイルがバックアップ内のバージョンに復元されました。

12.1.7. 異なる認証情報を使用したバックアップの復元

バックアップ内のデータベースの認証情報がバックアップの復元先となるマシンのデータベースの認証情報と異なる場合でも、engine-backup コマンドを使用して、Red Hat Virtualization Manager がすでにインストール/設定済みのマシンにバックアップを復元することができます。この方法は、インストールのバックアップを作成済みで、そのインストールをバックアップから別のシステムに復元する必要がある場合に有用です。

重要

バックアップを復元して既存インストールを上書きする場合は、engine-backup コマンドを使用する前に engine-cleanup コマンドを実行して既存インストールをクリーンアップしておく必要があります。engine-cleanup コマンドは、engine データベースをクリーンアップするのみで、データベースをドロップしたり、データベースを所有するユーザーを削除したりはしません。このため、ユーザーとデータベースはすでに存在しているので、新規データベース作成やデータベース認証情報の指定は必要ありません。ただし、engine データベースの所有者の認証情報が不明の場合には、バックアップを復元する前に変更しておく必要があります。

手順12.4 異なる認証情報を使用したバックアップの復元

  1. Red Hat Virtualization Manager がインストールされているマシンにログインします。
  2. 以下のコマンドを実行し、プロンプトに従って Manager の設定ファイルを削除し、Manager に関連付けられているデータベースをクリーンアップします。
    # engine-cleanup
  3. engine データベースの所有者の認証情報が不明の場合には、そのユーザーのパスワードを変更します。
    1. postgresql のコマンドラインに入ります。
      # su postgres
      $ psql
    2. 以下のコマンドを実行して、engine データベースを所有するユーザーのパスワードを変更します。
      postgres=# alter role user_name encrypted password 'new_password';
      必要な場合には、ovirt_engine_dwh のデータベースを所有するユーザーにも上記のコマンドを実行します。
  4. --change-db-credentials パラメーターを使用して新規データベースの認証情報を渡し、完全なバックアップまたはデータベースのみのバックアップを復元します。Manager のローカルに設定されているデータベースの database_locationlocalhost です。

    注記

    以下の例では、パスワードを指定せずにデータベースごとに --*password オプションを使用しており、データベースごとにパスワードが要求されます。これらのオプションに対して、コマンド自体でパスワードを指定することも可能ですが、パスワードが shell の履歴に保存されてしまうため、この方法は推奨していません。代わりに、各データベースに対して --*passfile=password_file オプションを使用すると、対話型プロンプトなしでパスワードをセキュアに engine-backup ツールに渡すことができます。
    • 完全なバックアップを復元する場合:
      # engine-backup --mode=restore --file=file_name --log=log_file_name --change-db-credentials --db-host=database_location --db-name=database_name --db-user=engine --db-password
      Data Warehouse も全バックアップの一部として復元する場合には、両データベースの変更後の認証情報を含めるようにしてください。
      engine-backup --mode=restore --file=file_name --log=log_file_name --change-db-credentials --db-host=database_location --db-name=database_name --db-user=engine --db-password --change-dwh-db-credentials --dwh-db-host=database_location --dwh-db-name=database_name --dwh-db-user=ovirt_engine_history --dwh-db-password
    • データベースのみのバックアップを復元する場合 (設定ファイルとデータベースのバックアップを復元):
      # engine-backup --mode=restore --scope=files --scope=db --file=file_name --log=log_file_name --change-db-credentials --db-host=database_location --db-name=database_name --db-user=engine --db-password
      上記の例では、Manager データベースのバックアップが復元されます。
      # engine-backup --mode=restore --scope=files --scope=dwhdb --file=file_name --log=log_file_name --change-dwh-db-credentials --dwh-db-host=database_location --dwh-db-name=database_name --dwh-db-user=ovirt_engine_history --dwh-db-password
      上記の例では、Data Warehouse データベースのバックアップが復元されます。
    正常に終了すると、以下のような出力が表示されます。
    You should now run engine-setup.
    Done.
  5. 以下のコマンドを実行し、プロンプトに従ってファイアウォールを再設定し、ovirt-engine サービスを正しく設定します。
    # engine-setup

12.1.8. engine データベースをリモートサーバーのデータベースへ移行する手順

Red Hat Virtualization Manager の初回設定後に、engine データベースをリモートのデータベースサーバーに移行することができます。
このタスクは 2 つの手順に分かれます。1 番目の手順は、リモートの PostgreSQL データベースの準備で、移行自体の必須条件となっており、サーバーに Red Hat Enterprise Linux がインストール済みで、かつ適切なサブスクリプションを使用して設定が完了していることを前提とします。
2 番目の手順はデータベースの移行で、pg_dump および pg_restore コマンドを使用してデータベースのバックアップと復元を処理します。そのため、/etc/ovirt-engine/engine.conf.d/10-setup-database.conf ファイルを編集して情報を更新する必要があります。少なくとも、新規データベースサーバーの場所を更新してください。新規データベースサーバーのデータベース名、ロール名、またはパスワードが更新されている場合には、これらの値も 10-setup-database.conf で更新する必要があります。以下の手順では、このファイルの変更を最小限に抑えるために、デフォルトの engine データベースの設定を使用しています。

手順12.5 リモートの PostgreSQL データベースを Red Hat Virtualization Manager で使用するための準備

  1. リモートのデータベースサーバーにログインして、PostgreSQL サーバーパッケージをインストールします。
    # yum install postgresql-server
  2. PostgreSQL データベースを初期化して postgresql サービスを起動し、このサービスがブート時に起動されるように設定します。
    # service postgresql initdb
    # service postgresql start
    # chkconfig postgresql on
  3. postgres ユーザーとして、psql コマンドラインインターフェースに接続します。
    # su - postgres
    $ psql
  4. データベースの読み取り/書き込み時に使用する Manager のユーザーを作成します。Manager のデフォルトユーザー名は engine です。
    postgres=# create role user_name with login encrypted password 'password';

    注記

    engine ユーザーのパスワードは、/etc/ovirt-engine/engine.conf.d/10-setup-database.conf にプレーンテキスト形式で保存されています。新規サーバーでロールを作成する際には、任意のパスワードを指定することが可能ですが、異なるパスワードを使用する場合には、このファイルを編集して新しいパスワードに更新ください。
  5. Red Hat Virtualization 環境についてのデータを保管するデータベースを作成します。Manager のデフォルトのデータベース名も、デフォルトのユーザー名も engine です。
    postgres=# create database database_name owner user_name template template0 encoding 'UTF8' lc_collate 'en_US.UTF-8' lc_ctype 'en_US.UTF-8';
  6. md5 クライアントの認証を有効にして、データベースにリモートからアクセスできるようにします。/var/lib/pgsql/data/pg_hba.conf ファイルを編集して、ファイルの一番下にある local で始まる行のすぐ下に以下の行を追加します。X.X.X.X は、Manager の IP アドレスに置き換えてください。
    host    database_name    user_name    X.X.X.X/32   md5
  7. データベースへの TCP/IP 接続を許可します。/var/lib/pgsql/data/pg_hba.conf ファイルを編集して、以下の行を追加します。
    listen_addresses='*'
    上記の例では、全インターフェースで接続をリッスンするように postgresql を設定しています。IP アドレスを指定して、対象のインターフェースを指定することもできます。
  8. PostgreSQL データベースの接続に使用するデフォルトのポートを開放して、更新したファイアウォールルールを保存します。
    # iptables -I INPUT 5 -p tcp --dport 5432 -j ACCEPT
    # service iptables save
  9. postgresql サービスを再起動します。
    # service postgresql restart
オプションで、http://www.postgresql.org/docs/8.4/static/ssl-tcp.html#SSL-FILE-USAGE の説明に従い、SSL を設定してデータベース接続のセキュリティーを保護します。

手順12.6 データベースの移行

  1. Red Hat Virtualization Manager のマシンにログインし、engine のバックアップを干渉しないように ovirt-engine サービスを停止します。
    # service ovirt-engine stop
  2. PostgreSQL pg_dump コマンドを使用して、engine データベースのバックアップを作成します。
    # su - postgres -c 'pg_dump -F c engine -f /tmp/engine.dump'
  3. バックアップファイルを新規データベースサーバーにコピーします。ターゲットのディレクトリーでは、postgres ユーザーの書き込みアクセスを許可しておく必要があります。
    # scp /tmp/engine.dump root@new.database.server.com:/tmp/engine.dump
  4. 新しいデータベースサーバーにログインして、PostgreSQL の pg_restore コマンドを使用してデータベースを復元します。
    # su - postgres -c 'pg_restore -d engine /tmp/engine.dump'
  5. Manager サーバーにログインして /etc/ovirt-engine/engine.conf.d/10-setup-database.conf を更新します。ENGINE_DB_HOSTlocalhost の値は、新規データベースサーバーの IP アドレスに置き換えます。新規データベースサーバーのエンジン名、ロール名、パスワードが異なる場合は、このファイルでこれらの値を更新してください。
  6. データベースが移行されたので、ovirt-engine サービスを起動します。
    # service ovirt-engine start