第12章 バックアップと移行
12.1. Red Hat Enterprise Virtualization Manager のバックアップと復元
12.1.1. Red Hat Enterprise Virtualization Manager のバックアップ
engine-backup ツールを使用して、Red Hat Enterprise Virtualization Manager を定期的にバックアップします。このツールは、ovirt-engine サービスを中断せずに、engine データベースと設定ファイルを単一のファイルにバックアップすることができます。
12.1.2. engine-backup コマンドの構文
engine-backup コマンドは、2 つの基本モードのいずれかで機能します。
# engine-backup --mode=backup
# engine-backup --mode=restore
基本オプション
--mode- コマンドがバックアップ操作と復元操作のどちらを実行するかを指定します。
backupとrestoreの 2 つのオプションが利用可能です。これは必須のパラメーターです。 --file- バックアップモードでは、バックアップ対象ファイルのパスと名前を指定します。リストアモードでは、バックアップデータの読み取り先ファイルのパスと名前を指定します。これは、バックアップモードとリストアモードの両方で必須のパラメーターです。
--log- バックアップまたは復元操作のログの書き込み先ファイルのパスと名前を指定します。このパラメーターはバックアップモードとリストアモードの両方で必須のパラメーターです。
--scope- バックアップおよび復元操作のスコープを指定します。
all(全データベースと設定データをバックアップ/復元)、files(システム上のファイルのみをバックアップ/復元)、db(Manager データベースのみをバックアップ/復元)、dwhdb(Data Warehouse データベースのみをバックアップ/復元)、reportsdb(Reports データベースのみをバックアップ/復元) の 5 つのオプションがあります。デフォルトのスコープはallです。--scopeパラメーターは、同じengine-backupコマンドで複数回指定することができます。
Manager データベースのオプション
engine-backup コマンドを restore モードで使用する場合にのみ利用可能です。以下に示したオプションの構文は、Manager データベースの復元に適用します。Data Warehouse データベースと Reports データベースの復元では同じオプションがあります。オプションの構文は 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 Enterprise Virtualization Manager のバックアップと復元にともなう利用可能なモード、パラメーター、使用例、新規データベースの作成方法およびファイアウォールの設定方法についての説明を表示します。
12.1.3. engine-backup コマンドを使用したバックアップの作成
engine-backup コマンドを使用して Manager がアクティブな状態の時にバックアップすることができます。--scope に以下のオプションのいずれかを追加して、実行するバックアップを指定します。
all: Manager 上の全データベースと設定ファイルの完全なバックアップfiles: システム上のファイルのみのバックアップdb: Manager データベースのみのバックアップdwhdb: Data Warehouse データベースのみのバックアップreportsdb: Reports データベースのみのバックアップ
重要
all 以外の範囲を指定するバックアップは、files の範囲または filesystem バックアップと共に復元する必要があります。
手順12.1 engine-backup コマンドの使用例
- Red Hat Enterprise Virtualization Manager を実行しているマシンにログインします。
- バックアップを作成します。
例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またはreportsdbに置き換えます。指定したパスとファイル名で、バックアップが含まれたtarファイルが作成されます。
tar ファイルを環境の復元に使用できるようになりました。
12.1.4. engine-backup コマンドを使用したバックアップの復元
engine-backup コマンドを使用してバックアップを復元するプロセスはごく簡単ですが、バックアップのリストア先に応じて、いくつか追加のステップが必要です。たとえば、engine-backup コマンドを使用して、ローカルまたはリモートのデータベースを使用する既存の Red Hat Enterprise Virtualization インストール上に、Red Hat Enterprise Virtualization の新規インストールを復元することが可能です。
重要
version ファイルの値を読み取ってください。
12.1.5. 新規インストールへのバックアップ復元
engine-backup コマンドを使用して、Red Hat Enterprise Virtualization Manager の新規インストールにバックアップを復元することができます。以下の手順は、ベースオペレーティングシステムと Red Hat Enterprise Virtualization Manager の必須パッケージがインストール済みで、かつ engine-setup コマンドがまだ実行されていないマシンで実行する必要があります。この手順は、バックアップを復元するマシンからバックアップファイル (単一または複数) にアクセスできることを前提としています。
注記
engine-backup コマンドは、engine データベースの実際の作成や postgresql サービスの初期設定は処理しません。そのため、これらのタスクは、新規インストールにバックアップを復元する際に以下の説明に従って手動で実行する必要があります。
手順12.2 新規インストールへのバックアップ復元
- Red Hat Enterprise Virtualization Manager がインストールされているマシンにログインします。engine データベースをリモートのホストに復元する場合には、そのホストにログオンして、適切な操作を実行する必要があります。また同様に、Reports と Data Warehouse をリモートホストに復元する場合には、そのホストにログインして、適切な操作を行う必要があります。
- リモートデータベースを使用する場合には、postgresql-server パッケージをインストールしてください。このパッケージは rhevm のインストールに含まれているため、ローカルデータベースには必要ありません。
# yum install postgesql-server
- バックアップ内のデータベースの復元先となる空のデータベースを手動で作成し、
postgresqlサービスを設定します。postgresqlデータベースを初期化し、postgresqlサービスを起動してから、このサービスがブート時に起動されるように設定します。# service postgresql initdb # service postgresql start # chkconfig postgresql on
- postgresql のコマンドラインに入ります。
# su postgres $ psql
engineユーザーを作成します。postgres=# create role engine with login encrypted password 'password';
Reports および Data Warehouse も復元する場合には、対象のホストでovirt_engine_reportsおよびovirt_engine_historyのユーザーを作成します。postgres=# create role ovirt_engine_reports with login encrypted password 'password';
postgres=# create role ovirt_engine_history with login encrypted password 'password';
- 新規データベースを作成します。
postgres=# create database database_name owner engine template template0 encoding 'UTF8' lc_collate 'en_US.UTF-8' lc_ctype 'en_US.UTF-8';
Reports および Data Warehouse も復元する場合には、対象のホストでデータベースを作成します。postgres=# create database database_name owner ovirt_engine_reports template template0 encoding 'UTF8' lc_collate 'en_US.UTF-8' lc_ctype 'en_US.UTF-8';
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';
- postgresql コマンドラインを終了して、postgres ユーザーからログアウトします。
postgres=# \q $ exit
/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
postgresqlサービスを再起動します。# service postgresql restart
--change-db-credentialsパラメーターを使用して新規データベースの認証情報を渡し、完全なバックアップまたはデータベースのみのバックアップを復元します。Manager のローカルに設定されているデータベースの database_location はlocalhostです。注記
以下の例では、パスワードを指定せずにデータベースごとに--*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
Reports および 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-reports-db-credentials --reports-db-host=database_location --reports-db-name=database_name --reports-db-user=ovirt_engine_reports --reports-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=reportsdb --file=file_name --log=log_file_name --change-reports-db-credentials --reports-db-host=database_location --reports-db-name=database_name --reports-db-user=ovirt_engine_reports --reports-db-password
上記の例では、Reports データベースのバックアップが復元されます。# 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.
- Manager のマシンにログインします。以下のコマンドを実行し、プロンプトに従って Manager を設定します。
# engine-setup
12.1.6. バックアップの復元による既存インストールの上書き
engine-backup コマンドで Red Hat Enterprise Virtualization Manager がすでにインストール/設定されているマシンにバックアップを復元することができます。この方法は、インストールのバックアップを取得済みで、そのインストールに対して変更を加えた後にバックアップからインストールを復元する場合に有用です。
重要
engine-backup コマンドを使用する前に engine-cleanup コマンドを実行して既存インストールをクリーンアップしておく必要があります。engine-cleanup コマンドは、engine データベースをクリーンアップするのみで、データベースをドロップしたり、データベースを所有するユーザーを削除したりはしません。このため、ユーザーとデータベースはすでに存在しているので、新規データベース作成やデータベース認証情報の指定は必要ありません。
手順12.3 バックアップの復元による既存インストールの上書き
- Red Hat Enterprise Virtualization Manager がインストールされているマシンにログインします。
- 以下のコマンドを実行し、プロンプトに従って Manager の設定ファイルを削除し、Manager に関連付けられているデータベースをクリーンアップします。
# engine-cleanup
- 完全なバックアップまたはデータベースのみのバックアップを復元します。
- 完全なバックアップを復元する場合:
# 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 データベースのバックアップを復元します。必要な場合には、Reports および Data Warehouse のデータベースも復元します。# engine-backup --mode=restore --scope=reportsdb --scope=dwhdb --file=file_name --log=log_file_name
正常に終了すると、以下のような出力が表示されます。You should now run engine-setup. Done.
- 以下のコマンドを実行し、プロンプトに従ってファイアウォールを再設定し、
ovirt-engineサービスを正しく設定します。# engine-setup
engine データベースおよび Red Hat Enterprise Virtualization Manager の設定ファイルがバックアップ内のバージョンに復元されました。
12.1.7. 異なる認証情報を使用したバックアップの復元
バックアップ内のデータベースの認証情報がバックアップの復元先となるマシンのデータベースの認証情報と異なる場合でも、engine-backup コマンドを使用して、Red Hat Enterprise Virtualization Manager がすでにインストール/設定済みのマシンにバックアップを復元することができます。この方法は、インストールのバックアップを作成済みで、そのインストールをバックアップから別のシステムに復元する必要がある場合に有用です。
重要
engine-backup コマンドを使用する前に engine-cleanup コマンドを実行して既存インストールをクリーンアップしておく必要があります。engine-cleanup コマンドは、engine データベースをクリーンアップするのみで、データベースをドロップしたり、データベースを所有するユーザーを削除したりはしません。このため、ユーザーとデータベースはすでに存在しているので、新規データベース作成やデータベース認証情報の指定は必要ありません。ただし、engine データベースの所有者の認証情報が不明の場合には、バックアップを復元する前に変更しておく必要があります。
手順12.4 異なる認証情報を使用したバックアップの復元
- Red Hat Enterprise Virtualization Manager がインストールされているマシンにログインします。
- 以下のコマンドを実行し、プロンプトに従って Manager の設定ファイルを削除し、Manager に関連付けられているデータベースをクリーンアップします。
# engine-cleanup
- engine データベースの所有者の認証情報が不明の場合には、そのユーザーのパスワードを変更します。
- postgresql のコマンドラインに入ります。
# su postgres $ psql
- 以下のコマンドを実行して、
engineデータベースを所有するユーザーのパスワードを変更します。postgres=# alter role user_name encrypted password 'new_password';
必要な場合には、ovirt_engine_reportsおよびovirt_engine_dwhのデータベースを所有するユーザーにも上記のコマンドを実行します。
--change-db-credentialsパラメーターを使用して新規データベースの認証情報を渡し、完全なバックアップまたはデータベースのみのバックアップを復元します。Manager のローカルに設定されているデータベースの database_location はlocalhostです。注記
以下の例では、パスワードを指定せずにデータベースごとに--*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
Reports および 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-reports-db-credentials --reports-db-host=database_location --reports-db-name=database_name --reports-db-user=ovirt_engine_reports --reports-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=reportsdb --file=file_name --log=log_file_name --change-reports-db-credentials --reports-db-host=database_location --reports-db-name=database_name --reports-db-user=ovirt_engine_reports --reports-db-password
上記の例では、Reports データベースのバックアップが復元されます。# 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.
- 以下のコマンドを実行し、プロンプトに従ってファイアウォールを再設定し、
ovirt-engineサービスを正しく設定します。# engine-setup
提供した認証情報を使用して、engine データベースおよび Red Hat Enterprise Virtualization Manager の設定ファイルがバックアップ内のバージョンに復元され、Manager が新規データベースを使用するための設定が完了しました。
12.1.8. engine データベースをリモートサーバーのデータベースへ移行する手順
engine データベースをリモートのデータベースサーバーに移行することができます。
pg_dump および pg_restore コマンドを使用してデータベースのバックアップと復元を処理します。そのため、/etc/ovirt-engine/engine.conf.d/10-setup-database.conf ファイルを編集して情報を更新する必要があります。少なくとも、新規データベースサーバーの場所を更新してください。新規データベースサーバーのデータベース名、ロール名、またはパスワードが更新されている場合には、これらの値も 10-setup-database.conf で更新する必要があります。以下の手順では、このファイルの変更を最小限に抑えるために、デフォルトの engine データベースの設定を使用しています。
手順12.5 リモートの PostgreSQL データベースを Red Hat Enterprise Virtualization Manager で使用するための準備
- リモートのデータベースサーバーにログインして、PostgreSQL サーバーパッケージをインストールします。
# yum install postgresql-server
- PostgreSQL データベースを初期化して
postgresqlサービスを起動し、このサービスがブート時に起動されるように設定します。# service postgresql initdb # service postgresql start # chkconfig postgresql on
postgresユーザーとして、psql コマンドラインインターフェースに接続します。# su - postgres $ psql
- データベースの読み取り/書き込み時に使用する Manager のユーザーを作成します。Manager のデフォルトユーザー名は
engineです。postgres=# create role user_name with login encrypted password 'password';
注記
engineユーザーのパスワードは、/etc/ovirt-engine/engine.conf.d/10-setup-database.confにプレーンテキスト形式で保存されています。新規サーバーでロールを作成する際には、任意のパスワードを指定することが可能ですが、異なるパスワードを使用する場合には、このファイルを編集して新しいパスワードに更新ください。 - Red Hat Enterprise 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';
- 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
- データベースへの TCP/IP 接続を許可します。
/var/lib/pgsql/data/pg_hba.confファイルを編集して、以下の行を追加します。listen_addresses='*'
上記の例では、全インターフェースで接続をリッスンするようにpostgresqlを設定しています。IP アドレスを指定して、対象のインターフェースを指定することもできます。 - PostgreSQL データベースの接続に使用するデフォルトのポートを開放して、更新したファイアウォールルールを保存します。
# iptables -I INPUT 5 -p tcp --dport 5432 -j ACCEPT # service iptables save
postgresqlサービスを再起動します。# service postgresql restart
手順12.6 データベースの移行
- Red Hat Enterprise Virtualization Manager のマシンにログインし、engine のバックアップを干渉しないように
ovirt-engineサービスを停止します。# service ovirt-engine stop
- PostgreSQL
pg_dumpコマンドを使用して、engineデータベースのバックアップを作成します。# su - postgres -c 'pg_dump -F c engine -f /tmp/engine.dump'
- バックアップファイルを新規データベースサーバーにコピーします。ターゲットのディレクトリーでは、
postgresユーザーの書き込みアクセスを許可しておく必要があります。# scp /tmp/engine.dump root@new.database.server.com:/tmp/engine.dump
- 新しいデータベースサーバーにログインして、PostgreSQL の
pg_restoreコマンドを使用してデータベースを復元します。# su - postgres -c 'pg_restore -d engine /tmp/engine.dump'
- Manager サーバーにログインして
/etc/ovirt-engine/engine.conf.d/10-setup-database.confを更新します。ENGINE_DB_HOSTのlocalhostの値は、新規データベースサーバーの IP アドレスに置き換えます。新規データベースサーバーのエンジン名、ロール名、パスワードが異なる場合は、このファイルでこれらの値を更新してください。 - データベースが移行されたので、
ovirt-engineサービスを起動します。# service ovirt-engine start

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.