第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 データベースの準備

  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 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';
  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 を設定してデータベース接続をセキュリティー保護します。

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

  1. ホストエンジンホストの 1 つにログインして、環境を global メンテナンスモードに指定します。これにより、高可用性のエージェントを無効化して、この手順の実行中に Manager 仮想マシンが移行されないようにします。
    # hosted-engine --set-maintenance --mode=global
  2. Manager 仮想マシンにログインし、engine のバックアップを干渉しないように ovirt-engine サービスを停止します。
    # service ovirt-engine stop
  3. PostgreSQL pg_dump コマンドを使用して、engine データベースのバックアップを作成します。
    # su - postgres -c 'pg_dump -F c engine -f /tmp/engine.dump'
  4. バックアップファイルを新規データベースサーバーにコピーします。ターゲットのディレクトリーでは、postgres ユーザーの書き込みアクセスを許可しておく必要があります。
    # scp /tmp/engine.dump root@new.database.server.com:/tmp/engine.dump
  5. 新しいデータベースサーバーにログインして、PostgreSQL の pg_restore コマンドを使用してデータベースを復元します。
    # su - postgres -c 'pg_restore -d engine /tmp/engine.dump'
  6. Manager 仮想マシンにログインして /etc/ovirt-engine/engine.conf.d/10-setup-database.conf を更新します。ENGINE_DB_HOSTlocalhost の値は、新規データベースサーバーの IP アドレスに置き換えます。新規データベースサーバーのエンジン名、ロール名、パスワードが異なる場合は、このファイルでこれらの値を更新してください。
  7. データベースが移行されたので、ovirt-engine サービスを起動します。
    # service ovirt-engine start
  8. ホストエンジンのホストにログインして、メンテナンスモードをオフにして、高可用性エージェントを有効にします。
    # hosted-engine --set-maintenance --mode=none