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-server
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /var/lib/pgsql/data/
ディレクトリーを初期化します。postgresql-setup --initdb
# postgresql-setup --initdb
Copy 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.service
Copy 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.service
Copy 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-upgrade
Copy 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.service
Copy 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.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション:
/tmp/pgdata.bak.tar.gz
アーカイブを削除します。rm /tmp/pgdata.bak.tar.gz
# rm /tmp/pgdata.bak.tar.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アップグレードプロセスを実行します。
postgresql-setup --upgrade
# postgresql-setup --upgrade
Copy 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.service
Copy 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-upgrade
Copy to Clipboard Copied! Toggle word wrap Toggle overflow