3.9. PostgreSQL インスタンスを以前の RHEL バージョンから RHEL 10 上の PostgreSQL 16 に移行する
RHEL 9 で PostgreSQL バージョン 16 未満をすでに実行しており、データベースソフトウェアを RHEL 10 を実行するホストに移動する場合は、データベースを移行できます。
次の移行方法を使用できます。
- バックアップと復元によるアップグレード: この方法は時間がかかる場合もありますが、ほとんどのシナリオで機能します。
-
pg_upgradeユーティリティーを使用した高速アップグレード - この方法はより高速ですが、PostgreSQL 13 から 16 への移行で、ハードウェアアーキテクチャーが同じままである場合にのみ機能します。
PostgreSQL の移行前に、必ずソースホスト上の /var/lib/pgsql/data/ ディレクトリーをバックアップしてください。
3.9.1. バックアップとリストア方式を使用して RHEL 10 上の PostgreSQL に移行する リンクのコピーリンクがクリップボードにコピーされました!
バックアップと復元の方法を使用して、PostgreSQL の RHEL 8 または RHEL 9 バージョンから、RHEL 10 上の同等またはそれ以降のバージョンの PostgreSQL にデータを移行できます。
前提条件
- 既存のデータベースサーバーは RHEL 8 または RHEL 9 上で実行され、RHEL リポジトリーからインストールされた PostgreSQL バージョンを使用します。
-
両方のホストのロケール設定は同じです。これを確認するには、両方のホストで
echo $LANGコマンドの出力を比較します。
手順
移行する既存の PostgreSQL インスタンスがあるホストで、次の手順を実行します。
すべてのデータベースを
/var/lib/pgsql/pgdump_file.sqlファイルにエクスポートします。su - postgres -c "pg_dumpall > /var/lib/pgsql/pgdump_file.sql"
# su - postgres -c "pg_dumpall > /var/lib/pgsql/pgdump_file.sql"Copy to Clipboard Copied! Toggle word wrap Toggle overflow エクスポートされたファイルを確認します。
su - postgres -c 'less "/var/lib/pgsql/pgdump_file.sql"'
# su - postgres -c 'less "/var/lib/pgsql/pgdump_file.sql"'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前の手順で作成したデータベースダンプと PostgreSQL 設定ファイルを RHEL 10 ホストにコピーします。以下に例を示します。
scp /var/lib/pgsql/pgdump_file.sql \ /var/lib/pgsql/data/pg_hba.conf \ /var/lib/pgsql/data/pg_ident.conf \ /var/lib/pgsql/data/postgresql.conf \ <user>@<rhel_10_host>:/tmp/# scp /var/lib/pgsql/pgdump_file.sql \ /var/lib/pgsql/data/pg_hba.conf \ /var/lib/pgsql/data/pg_ident.conf \ /var/lib/pgsql/data/postgresql.conf \ <user>@<rhel_10_host>:/tmp/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
RHEL 10 ホストの場合:
postgresql-serverパッケージをインストールします。dnf install postgresql-server
# dnf install postgresql-serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow /var/lib/pgsql/data/ディレクトリーを初期化します。postgresql-setup --initdb
# postgresql-setup --initdbCopy to Clipboard Copied! Toggle word wrap Toggle overflow コピーした設定ファイルを
/var/lib/pgsql/data/ディレクトリーに移動します。mv /tmp/pg_hba.conf \ /tmp/pg_ident.conf \ /tmp/postgresql.conf \ /var/lib/pgsql/data/# mv /tmp/pg_hba.conf \ /tmp/pg_ident.conf \ /tmp/postgresql.conf \ /var/lib/pgsql/data/Copy to Clipboard Copied! Toggle word wrap Toggle overflow /var/lib/pgsql/data/ directory内のコンテンツの正しい所有権を確認します。chown -R postgres:postgres /var/lib/pgsql/data/
# chown -R postgres:postgres /var/lib/pgsql/data/Copy to Clipboard Copied! Toggle word wrap Toggle overflow /var/lib/pgsql/data/の SELinux コンテキストを復元します。restorecon -Rv /var/lib/pgsql/data/
# restorecon -Rv /var/lib/pgsql/data/Copy to Clipboard Copied! Toggle word wrap Toggle overflow postgresqlサービスを有効にして起動します。systemctl enable --now postgresql.service
# systemctl enable --now postgresql.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow postgresユーザーとしてデータをインポートします。su - postgres -c 'psql -f /tmp/pgdump_file.sql postgres'
# su - postgres -c 'psql -f /tmp/pgdump_file.sql postgres'Copy to Clipboard Copied! Toggle word wrap Toggle overflow - データベースを検証し、PostgreSQL サーバーを使用するアプリケーションが期待どおりに動作することを確認します。
3.9.2. pg_update を使用して、PostgreSQL 13 を RHEL の以前のバージョンから RHEL 10 上の PostgreSQL 16 へ移行する リンクのコピーリンクがクリップボードにコピーされました!
PostgreSQL 13 インスタンスを以前の RHEL バージョンから RHEL 10 上の PostgreSQL 16 に移行する場合は、高速アップグレード方式を使用できます。この方法では、/var/lib/pgsql/data/ ディレクトリーの内容を RHEL 10 ホストにコピーし、pg_update ユーティリティーによってデータベースが変換されます。
この方法は、既存の PostgreSQL インスタンスがバージョン 13 で、ソースホストと宛先ホストのハードウェアアーキテクチャーが同じである場合にのみ機能します。それ以外の場合は、バックアップと復元の方法 を使用します。
前提条件
- 既存のデータベースサーバーが PostgreSQL 13 を使用している。
- 現在のサーバーと将来のサーバーのハードウェアアーキテクチャーが同じである。
RHEL 10 ホストには、
/var/lib/pgsql/ディレクトリーを保持するディスク上に十分な空き領域がある。たとえば、移行する PostgreSQL サーバー上のディレクトリーのサイズが 10 GiB の場合、移行中に RHEL 10 ホストに少なくとも 20 GiB の空きディスク領域が必要です。
-
両方のホストのロケール設定は同じです。これを確認するには、両方のホストで
echo $LANGコマンドの出力を比較します。
手順
移行する既存の PostgreSQL インスタンスがあるホストで、次の手順を実行します。
postgresqlサービスを停止します。systemctl stop postgresql.service
# systemctl stop postgresql.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow /var/lib/pgsql/ディレクトリーに移動し、dataサブディレクトリーをバックアップします。cd /var/lib/pgsql/ tar -zcf ~/pgdata.bak.tar.gz data/
# cd /var/lib/pgsql/ # tar -zcf ~/pgdata.bak.tar.gz data/Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~/pgdata.bak.tar.gzアーカイブを RHEL 10 ホストにコピーします。以下に例を示します。scp ~/pgdata.bak.tar.gz <user>@<rhel_10_host>:/tmp/
# scp ~/pgdata.bak.tar.gz <user>@<rhel_10_host>:/tmp/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
RHEL 10 ホストの場合:
必要なパッケージをインストールします。
dnf install postgresql-server postgresql-upgrade
# dnf install postgresql-server postgresql-upgradeCopy to Clipboard Copied! Toggle word wrap Toggle overflow postgresql-upgradeパッケージは、移行中に必要な PostgreSQL 13 サーバーを提供します。-
サードパーティーの PostgreSQL サーバーモジュールを使用する場合は、
postgresql-develおよびpostgresql-upgrade-develの両方のパッケージに対してビルドし、インストールします。 postgresqlサービスが停止していることを確認します。systemctl stop postgresql.service
# systemctl stop postgresql.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow /var/lib/pgsql/ディレクトリーに移動し、以前のホストからバックアップされたデータディレクトリーを抽出します。cd /var/lib/pgsql/ tar -zxf /tmp/pgdata.bak.tar.gz
# cd /var/lib/pgsql/ # tar -zxf /tmp/pgdata.bak.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション:
/tmp/pgdata.bak.tar.gzアーカイブを削除します。rm /tmp/pgdata.bak.tar.gz
# rm /tmp/pgdata.bak.tar.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow アップグレードプロセスを実行します。
postgresql-setup --upgrade
# postgresql-setup --upgradeCopy to Clipboard Copied! Toggle word wrap Toggle overflow postgresql-setupシェルスクリプトは、/var/lib/pgsql/data/ディレクトリーの名前を/var/lib/pgsql/data-old/に変更し、pg_upgradeユーティリティーを使用して、データベースを再作成された/var/lib/pgsql/data/ディレクトリーに移行します。重要pg_upgradeユーティリティーは、データベースのみを移行し、設定ファイルは移行しません。移行後、/var/lib/pgsql/data/にはデフォルトの.confファイルのみが含まれます。以前にカスタム設定ファイルがあった場合は、それらを/var/lib/pgsql/data-old/ディレクトリーからコピーし、新しい PostgreSQL バージョンと互換性があることを確認します。postgresqlサービスを有効にして起動します。systemctl enable --now postgresql.service
# systemctl enable --now postgresql.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのデータベースをクリーンアップして分析します。
su postgres -c 'vacuumdb --all --analyze-in-stages'
# su postgres -c 'vacuumdb --all --analyze-in-stages'Copy to Clipboard Copied! Toggle word wrap Toggle overflow - データベースを検証し、PostgreSQL サーバーを使用するアプリケーションが期待どおりに動作することを確認します。
オプション: 移行前のデータベースと設定ファイルが含まれている
/var/lib/pgsql/data-old/ディレクトリーを削除します。rm -r /var/lib/pgsql/data-old/
# rm -r /var/lib/pgsql/data-old/Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション:
postgresql-upgradeパッケージを削除します。dnf remove postgresql-upgrade
# dnf remove postgresql-upgradeCopy to Clipboard Copied! Toggle word wrap Toggle overflow