3.11. RHEL 10 バージョンの PostgreSQL 16 から PostgreSQL 18 へのアップグレード
RHEL 10 上で PostgreSQL データベースサーバーをバージョン 16 から 18 にアップグレードすることで、新機能や改善点を利用できます。
主な機能拡張や変更点については、RHEL 10.2 リリースノートの リリースノート を参照してください。
前提条件
- RHEL 10 上で既存のデータベースサーバーが PostgreSQL 16 を使用している。
ホストの
/var/lib/pgsql/ディレクトリーが格納されているディスクに十分な空き領域がある。たとえば、ディレクトリーのサイズが 10 GiB の場合、少なくとも 10 GiB の空きディスク容量が必要です。
手順
データページチェックサムの現在のステータスを表示します。
# pg_controldata /var/lib/pgsql/data | grep "Data page checksum"Data page checksum version: 0コマンドが
0を返した場合、データページチェックサムは無効です。postgresqlサービスを停止します。# systemctl stop postgresqlデータページチェックサムが無効な場合は、方針を決定します。
データ整合性を向上させるために、アップグレード前にデータページチェックサムを有効にする場合:
データページチェックサムを有効にします。
# pg_checksums --enable -D /var/lib/pgsql/data/データベースの規模によっては、この操作にかなりの時間がかかる場合があります。
有効化を検証します。
# pg_controldata /var/lib/pgsql/data | grep "Data page checksum"Data page checksum version: 1
データページのチェックサムを無効にしたままにする場合は、
PGSETUP_INITDB_OPTIONS環境オプションを--no-data-checksumsに設定します。# export PGSETUP_INITDB_OPTIONS="--no-data-checksums"
PostgreSQL 18 に切り替えます。
# dnf install --allowerasing postgresql18-server重要続行する前に、提示された
dnfトランザクションを慎重に確認してください。以前のバージョンの各パッケージが、新しいバージョンの同等のパッケージに置き換えられていることを確認してください。インストールリストが不完全な場合、--allowerasingオプションにより、意図しないパッケージ削除が発生し、インストールするソフトウェアよりも多くのソフトウェアが削除される可能性があります。postgresql18-upgradeパッケージをインストールします。# dnf install postgresql18-upgradeアップグレードプロセスを実行します。
# 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 start postgresqlすべてのデータベースをクリーンアップして分析します。
# su postgres -c 'vacuumdb --all --analyze-in-stages'- データベースを検証し、PostgreSQL サーバーを使用するアプリケーションが期待どおりに動作することを確認します。
オプション: 移行前のデータベースと設定ファイルが含まれている
/var/lib/pgsql/data-old/ディレクトリーを削除します。# rm -r /var/lib/pgsql/data-old/オプション:
postgresql18-upgradeパッケージを削除します。# dnf remove postgresql18-upgrade