第8章 データベースの移行
8.1. セルフホストエンジンのデータベースをリモートサーバーのデータベースへ移行する手順
Red Hat Enterprise 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
データベースの設定を使用しています。
手順8.1 Red Hat Enterprise Virtualization Manager で使用するためのリモートの PostgreSQL データベースの準備
- リモートのデータベースサーバーにログインして、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
オプションで、http://www.postgresql.org/docs/8.4/static/ssl-tcp.html#SSL-FILE-USAGE の手順に従って、SSL を設定してデータベース接続をセキュリティー保護します。
手順8.2 データベースの移行
- ホストエンジンホストの 1 つにログインして、環境を
global
メンテナンスモードに指定します。これにより、高可用性のエージェントを無効化して、この手順の実行中に Manager 仮想マシンが移行されないようにします。# hosted-engine --set-maintenance --mode=global
- 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
- ホストエンジンのホストにログインして、メンテナンスモードをオフにして、高可用性エージェントを有効にします。
# hosted-engine --set-maintenance --mode=none