3.10.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/var/lib/pgsql/ディレクトリーに移動し、dataサブディレクトリーをバックアップします。# cd /var/lib/pgsql/ # tar -zcf ~/pgdata.bak.tar.gz data/~/pgdata.bak.tar.gzアーカイブを RHEL 10 ホストにコピーします。以下に例を示します。# scp ~/pgdata.bak.tar.gz <user>@<rhel_10_host>:/tmp/
RHEL 10 ホストの場合:
必要なパッケージをインストールします。
# dnf install postgresql-server postgresql-upgradepostgresql-upgradeパッケージは、移行中に必要な PostgreSQL 13 サーバーを提供します。-
サードパーティーの PostgreSQL サーバーモジュールを使用する場合は、
postgresql-develおよびpostgresql-upgrade-develの両方のパッケージに対してビルドし、インストールします。 postgresqlサービスが停止していることを確認します。# systemctl stop postgresql.service/var/lib/pgsql/ディレクトリーに移動し、以前のホストからバックアップされたデータディレクトリーを抽出します。# cd /var/lib/pgsql/ # tar -zxf /tmp/pgdata.bak.tar.gzオプション:
/tmp/pgdata.bak.tar.gzアーカイブを削除します。# rm /tmp/pgdata.bak.tar.gzアップグレードプロセスを実行します。
# postgresql-setup --upgradepostgresql-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すべてのデータベースをクリーンアップして分析します。
# su postgres -c 'vacuumdb --all --analyze-in-stages'- データベースを検証し、PostgreSQL サーバーを使用するアプリケーションが期待どおりに動作することを確認します。
オプション: 移行前のデータベースと設定ファイルが含まれている
/var/lib/pgsql/data-old/ディレクトリーを削除します。# rm -r /var/lib/pgsql/data-old/オプション:
postgresql-upgradeパッケージを削除します。# dnf remove postgresql-upgrade