5.4.2. Red Hat Enterprise Linux システムバージョンの PostgreSQL から PostgreSQL 9.6 Software Collection への移行
Red Hat Enterprise Linux 6 にはPostgreSQL 8.4 が、Red Hat Enterprise Linux 7 にはPostgreSQL 9.2 が配布されています。Red Hat Enterprise Linux システムバージョンのPostgreSQLからrh-postgresql96 Software Collection にデータを移行するには、
pg_upgradeツールを使用して高速アップグレードを行う (推奨) か、データベースデータを SQL コマンドでテキストファイルにダンプして新しいデータベースにインポートする方法があります。2 つ目の方法は、通常大幅に遅くなるため、手動で修正が必要になる場合があります。このアップグレード方法の詳細は、PostgreSQL ドキュメント を参照してください。以下の手順は、Red Hat Enterprise Linux 6 と Red Hat Enterprise Linux 7 システムバージョンのPostgreSQL に適用されます。
重要
Red Hat Enterprise Linux システムバージョンの PostgreSQL から PostgreSQL 9.6 にデータを移行する前に、デフォルトで
/var/lib/pgsql/data/ディレクトリーにある PostgreSQL データベースファイルを含むすべてのデータをバックアップしてください。
手順5.1 pg_upgrade ツールを使用した高速アップグレード
PostgreSQL サーバーの高速アップグレードを実行するには、以下の手順を実行します。
- 古い PostgreSQL サーバーを停止し、データが一貫性のない状態にあることを確認します。これを行うには、
rootで次のコマンドを実行します。service postgresql stopサーバーが起動していないことを確認するには、以下を入力します。service postgresql status - 古いディレクトリー
/var/lib/pgsql/data/が存在することを確認します。file /var/lib/pgsql/data/データのバックアップを作成します。 - 新しいデータディレクトリー
/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} rootで以下のコマンドを実行して、新しいサーバーのデータベースデータをアップグレードします。scl enable rh-postgresql96 -- postgresql-setup --upgradeまた、/opt/rh/rh-postgresql96/root/usr/bin/postgresql-setup --upgradeコマンドを使用することもできます。別のバージョンの PostgreSQL からのアップグレードには--upgrade-fromオプションを使用できます。可能なアップグレードシナリオの一覧は、--upgrade-idsオプションを使用して利用できます。アップグレード中に何か問題が発生したかどうかを確認するために、出来上がった/var/lib/pgsql/upgrade_rh-postgresql96-postgresql.logログファイルを読むことをお勧めします。rootで新しいサーバーを起動します。service rh-postgresql96-postgresql startまた、以下のようにanalyze_new_cluster.shスクリプトを実行することが推奨されます。su - postgres -c 'scl enable rh-postgresql96 ~/analyze_new_cluster.sh'- 必要に応じて、システムの起動時に PostgreSQL 9.6 サーバーが自動的に起動するように設定できます。古いシステム PostgreSQL サーバーを無効にするには、
rootで以下のコマンドを入力します。chkconfig postgresql offPostgreSQL 9.6 サーバーを有効にするには、rootで入力します。chkconfig rh-postgresql96-postgresql on - デフォルトの設定と異なる場合は、設定ファイル、特に
/var/opt/rh/rh-postgresql96/lib/pgsql/data/pg_hba.conf設定ファイルを必ず更新してください。それ以外の場合は、postgresユーザーのみがデータベースにアクセスできます。
手順5.2 ダンプおよびリストアアップグレードの実行
PostgreSQL サーバーのダンプおよび復元アップグレードを実行するには、以下の手順を実行します。
- シェルプロンプトで、
rootで以下を入力し、古い PostgreSQL サーバーが実行中であることを確認します。service postgresql start - PostgreSQL データベースの全データをスクリプトファイルにダンプします。
rootで以下のコマンドを実行します。su - postgres -c 'pg_dumpall > ~/pgdump_file.sql' rootで以下のコマンドを実行して、古いサーバーを停止します。service postgresql stop- 新規サーバーのデータディレクトリーを
rootとして初期化します。scl enable rh-postgresql96-postgresql -- postgresql-setup --initdb rootで新しいサーバーを起動します。service rh-postgresql96-postgresql start- 以前に作成した SQL ファイルからデータをインポートします。
su - postgres -c 'scl enable rh-postgresql96 "psql -f ~/pgdump_file.sql postgres"' - 必要に応じて、システムの起動時に PostgreSQL 9.6 サーバーが自動的に起動するように設定できます。古いシステム PostgreSQL サーバーを無効にするには、
rootで以下のコマンドを入力します。chkconfig postgresql offPostgreSQL 9.6 サーバーを有効にするには、rootで入力します。chkconfig rh-postgresql96-postgresql on - デフォルトの設定と異なる場合は、設定ファイル、特に
/var/opt/rh/rh-postgresql96/lib/pgsql/data/pg_hba.conf設定ファイルを必ず更新してください。それ以外の場合は、postgresユーザーのみがデータベースにアクセスできます。