4.10. RHEL 9 上で、PostgreSQL インスタンスを以前の RHEL バージョンから PostgreSQL 13、PostgreSQL 15、または PostgreSQL 16 に移行する
すでに RHEL 8 上で PostgreSQL を実行していて、データベースソフトウェアを RHEL 9 を実行するホストに移行したい場合は、データベースを移行できます。
RHEL では、データベースファイルに対して 2 つの PostgreSQL 移行パスを使用できます。
- pg_upgrade ユーティリティーを使用した高速アップグレード
- ダンプおよび復元のアップグレード
高速アップグレードメソッドは、ダンプおよび復元のプロセスよりも速くなります。ただし、場合によっては高速アップグレードが機能せず、たとえばアーキテクチャー間のアップグレードなど、ダンプおよび復元プロセスのみを使用できます。
PostgreSQL の最新バージョンへの移行の前提条件として、すべての PostgreSQL データベースをバックアップしてください。
データベースをダンプし、SQL ファイルのバックアップを実行することは、ダンプおよび復元プロセスで必要であり、高速アップグレードメソッドとして推奨されます。
4.10.1. pg_upgrade ユーティリティーを使用した高速アップグレード リンクのコピーリンクがクリップボードにコピーされました!
システム管理者であれば、高速アップグレード方式を使用して PostgreSQL の最新バージョンにアップグレードできます。高速アップグレードを実行するには、バイナリーデータファイルを /var/lib/pgsql/data/ ディレクトリーにコピーし、pg_upgrade ユーティリティーを使用します。
この方法を使用すると、次のバージョン間でデータを移行できます。
- RHEL 8 版の PostgreSQL 12 から RHEL 版の PostgreSQL 13 へ
- RHEL 8 または 9 バージョンの PostgreSQL 13 から RHEL バージョンの PostgreSQL 15 へ
- RHEL 8 または 9 バージョンの PostgreSQL 15 から RHEL バージョンの PostgreSQL 16 へ
以下の手順では、高速アップグレード方式を使用して、RHEL 8 版の PostgreSQL 12 から RHEL 9 版の PostgreSQL 13 に移行する方法について説明します。12 以外の postgresql ストリームからの移行には、以下のいずれかの方法を使用します。
-
RHEL 8 上で PostgreSQL サーバーをバージョン 12 にアップデートしてから、
pg_upgradeユーティリティーを使用して RHEL 9 上の PostgreSQL 13 に高速アップグレードしてください。 - RHEL 8 の任意のバージョンの PostgreSQL と、RHEL 9 の同等またはそれ以降のバージョンの PostgreSQL との間で、ダンプとリストアによる直接アップグレードを使用できます。
前提条件
- PostgreSQL データベースと設定ファイルのバックアップを作成しました。
手順
RHEL 9 システムで、
postgresql-serverパッケージおよびpostgresql-upgradeパッケージをインストールします。# dnf install postgresql-server postgresql-upgradeオプションとして、RHEL 8 で PostgreSQL サーバーモジュールを使用していた場合は、RHEL 9 システムにも 2 つのバージョンでインストールしてください。PostgreSQL 12 用にコンパイルされたもの (
postgresql-upgradeパッケージとしてインストール) と、PostgreSQL 13 のターゲットバージョン用にコンパイルされたもの (postgresql-serverパッケージとしてインストール) です。サードパーティー製の PostgreSQL サーバーモジュールをコンパイルする必要がある場合は、postgresql-develパッケージとpostgresql-upgrade-develパッケージの両方に対してビルドしてください。以下の項目を確認します。
-
基本設定 - RHEL 9 システムで、サーバーがデフォルトの
/var/lib/pgsql/dataディレクトリーを使用し、データベースが正しく初期化され、有効になっているかどうかを確認します。さらに、データファイルは、/usr/lib/systemd/system/postgresql.serviceファイルに記載されているパスと同じパスに保存する必要があります。 - PostgreSQL サーバー: システム上で複数の PostgreSQL サーバーを実行できます。これらのすべてのサーバーのデータディレクトリーが独立して処理されていることを確認してください。
-
PostgreSQL サーバーモジュール:RHEL 8 で使用していた PostgreSQL サーバーモジュールが、RHEL 9 システムにもインストールされていることを確認してください。プラグインは
/usr/lib64/pgsql/ディレクトリーにインストールされていることに注意してください。
-
基本設定 - RHEL 9 システムで、サーバーがデフォルトの
データのコピー時に、
postgresqlサービスがソースおよびターゲットのシステムで稼働していないことを確認します。# systemctl stop postgresql.service-
データベースファイルをソースの場所から RHEL 9 システムの
/var/lib/pgsql/data/ディレクトリーにコピーします。 PostgreSQL ユーザーとして以下のコマンドを実行して、アップグレードプロセスを実行してください。
# postgresql-setup --upgradeこれでバックグラウンドで
pg_upgradeプロセスが開始します。障害が発生すると、
postgresql-setupは通知のエラーメッセージを提供します。/var/lib/pgsql/data-oldから新規クラスターに、以前の設定をコピーします。高速アップグレードは、新しいデータスタックで以前の設定を再利用せず、設定がゼロから生成されることに注意してください。古い設定と新しい設定を手動で組み合わせる場合は、データディレクトリーにある
*.confファイルを使用してください。新しい PostgreSQL サーバーを起動します。
# systemctl start postgresql.service新しいデータベースクラスターを分析します。
PostgreSQL 13 の場合:
su postgres -c '~/analyze_new_cluster.sh'PostgreSQL 15 以降の場合:
su postgres -c 'vacuumdb --all --analyze-in-stages'注記場合によって、
ALTER COLLATION name REFRESH VERSIONを使用する必要があります。詳細は、アップストリームのドキュメント を参照してください。
新しい PostgreSQL サーバーを起動時に自動的に起動させたい場合は、以下を実行してください。
# systemctl enable postgresql.service