5.7.3. PostgreSQL 9.5 Software Collection から PostgreSQL 9.6 Software Collection への移行

rh-postgresql95 Software Collection からrh-postgresql96 Collection にデータを移行するには、pg_upgradeツールを使って高速アップグレードを行うか (推奨)、データベースのデータを SQL コマンドでテキストファイルにダンプして新しいデータベースにインポートする方法があります。2 つ目の方法は、通常大幅に遅くなるため、手動で修正が必要になる場合があります。このアップグレード方法の詳細は、PostgreSQL ドキュメント を参照してください。
重要
PostgreSQL 9.5 からPostgreSQL 9.6 にデータを移行する前に、デフォルトでは/var/opt/rh/rh-postgresql95/lib/pgsql/data/ディレクトリーにある PostgreSQL データベースファイルを含め、すべてのデータをバックアップしてください。

手順5.7 pg_upgrade ツールを使用した高速アップグレード

PostgreSQL サーバーの高速アップグレードを実行するには、以下の手順を実行します。
  1. 古い PostgreSQL サーバーを停止し、データが一貫性のない状態にあることを確認します。これを行うには、root で次のコマンドを実行します。
    service rh-postgresql95-postgresql stop
    サーバーが起動していないことを確認するには、以下を入力します。
    service rh-postgresql95-postgresql status
  2. 古いディレクトリー/var/opt/rh/postgresql95/lib/pgsql/data/が存在することを確認します。
    file /var/opt/rh/rh-postgresql95/lib/pgsql/data/
    データのバックアップを作成します。
  3. 新しいデータディレクトリー/var/opt/rh/rh-postgresql96/lib/pgsql/data/が存在していないことを確認します。
    file /var/opt/rh/rh-postgresql96/lib/pgsql/data/
    PostgreSQL 9.6 を新規にインストールした場合、このディレクトリーはシステム内に存在しないはずです。存在する場合は、root で以下のコマンドを実行してバックアップを作成します。
    mv /var/opt/rh/rh-postgresql96/lib/pgsql/data{,-scl-backup}
  4. root で以下のコマンドを実行して、新しいサーバーのデータベースデータをアップグレードします。
    scl enable rh-postgresql96 -- postgresql-setup --upgrade --upgrade-from=rh-postgresql95-postgresql
    また、 /opt/rh/rh-postgresql96/root/usr/bin/postgresql-setup --upgrade --upgrade-from=rh-postgresql95-postgresqlコマンドを使用することもできます。
    別のバージョンの PostgreSQL からアップグレードする場合には、--upgrade-from オプションを使用できます。可能なアップグレードシナリオの一覧は、--upgrade-ids オプションを使用して利用できます。
    アップグレード中に何か問題が発生したかどうかを確認するために、出来上がった/var/lib/pgsql/upgrade_rh-postgresql96-postgresql.logログファイルを読むことをお勧めします。
  5. root で新しいサーバーを起動します。
    service rh-postgresql96-postgresql start
    また、以下のように analyze_new_cluster.sh スクリプトを実行することが推奨されます。
    su - postgres -c 'scl enable rh-postgresql96 ~/analyze_new_cluster.sh'
  6. 必要に応じて、システムの起動時に PostgreSQL 9.6 サーバーが自動的に起動するように設定できます。古い PostgreSQL 9.5 サーバーを無効にするには、rootで次のコマンドを入力します。
    chkconfig rh-postgresql95-postgreqsql off
    PostgreSQL 9.6 サーバーを有効にするには、rootで入力します。
    chkconfig rh-postgresql96-postgresql on
  7. デフォルトの設定と異なる場合は、設定ファイル、特に/var/opt/rh/rh-postgresql96/lib/pgsql/data/pg_hba.conf設定ファイルを必ず更新してください。それ以外の場合は、postgres ユーザーのみがデータベースにアクセスできます。

手順5.8 ダンプおよびリストアアップグレードの実行

PostgreSQL サーバーのダンプおよび復元アップグレードを実行するには、以下の手順を実行します。
  1. シェルプロンプトで、root で以下を入力し、古い PostgreSQL サーバーが実行中であることを確認します。
    service rh-postgresql95-postgresql start
  2. PostgreSQL データベースの全データをスクリプトファイルにダンプします。root で以下のコマンドを実行します。
    su - postgres -c 'scl enable rh-postgresql95 "pg_dumpall > ~/pgdump_file.sql"'
  3. root で以下のコマンドを実行して、古いサーバーを停止します。
    service rh-postgresql95-postgresql stop
  4. 新規サーバーのデータディレクトリーを root として初期化します。
    scl enable rh-postgresql96-postgresql -- postgresql-setup --initdb
  5. root で新しいサーバーを起動します。
    service rh-postgresql96-postgresql start
  6. 以前に作成した SQL ファイルからデータをインポートします。
    su - postgres -c 'scl enable rh-postgresql96 "psql -f ~/pgdump_file.sql postgres"'
  7. 必要に応じて、システムの起動時に PostgreSQL 9.6 サーバーが自動的に起動するように設定できます。古い PostgreSQL 9.5 サーバーを無効にするには、rootで次のコマンドを入力します。
    chkconfig rh-postgresql95-postgresql off
    PostgreSQL 9.6 サーバーを有効にするには、rootで入力します。
    chkconfig rh-postgresql96-postgresql on
  8. デフォルトの設定と異なる場合は、設定ファイル、特に/var/opt/rh/rh-postgresql96/lib/pgsql/data/pg_hba.conf設定ファイルを必ず更新してください。それ以外の場合は、postgres ユーザーのみがデータベースにアクセスできます。
postgresql92 Software Collection から移行する必要がある場合は、Red Hat Software Collections 2.0 Release Notes を参照してください。この手順は同じですが、新しい Collection のバージョンを調整する必要があります。これは、Red Hat Software Collections 2.2 Release Notes で説明したように、rh-postgresql94Software Collection からの移行を適用します。