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 データベースと設定ファイルのバックアップを作成しました。

手順

  1. 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 パッケージの両方に対してビルドしてください。

  2. 以下の項目を確認します。

    • 基本設定 - RHEL 9 システムで、サーバーがデフォルトの /var/lib/pgsql/data ディレクトリーを使用し、データベースが正しく初期化され、有効になっているかどうかを確認します。さらに、データファイルは、/usr/lib/systemd/system/postgresql.service ファイルに記載されているパスと同じパスに保存する必要があります。
    • PostgreSQL サーバー: システム上で複数の PostgreSQL サーバーを実行できます。これらのすべてのサーバーのデータディレクトリーが独立して処理されていることを確認してください。
    • PostgreSQL サーバーモジュール:RHEL 8 で使用していた PostgreSQL サーバーモジュールが、RHEL 9 システムにもインストールされていることを確認してください。プラグインは /usr/lib64/pgsql/ ディレクトリーにインストールされていることに注意してください。
  3. データのコピー時に、postgresql サービスがソースおよびターゲットのシステムで稼働していないことを確認します。

    # systemctl stop postgresql.service
  4. データベースファイルをソースの場所から RHEL 9 システムの /var/lib/pgsql/data/ ディレクトリーにコピーします。
  5. PostgreSQL ユーザーとして以下のコマンドを実行して、アップグレードプロセスを実行してください。

    # postgresql-setup --upgrade

    これでバックグラウンドで pg_upgrade プロセスが開始します。

    障害が発生すると、postgresql-setup は通知のエラーメッセージを提供します。

  6. /var/lib/pgsql/data-old から新規クラスターに、以前の設定をコピーします。

    高速アップグレードは、新しいデータスタックで以前の設定を再利用せず、設定がゼロから生成されることに注意してください。古い設定と新しい設定を手動で組み合わせる場合は、データディレクトリーにある *.conf ファイルを使用してください。

  7. 新しい PostgreSQL サーバーを起動します。

    # systemctl start postgresql.service
  8. 新しいデータベースクラスターを分析します。

    • PostgreSQL 13 の場合:

      su postgres -c '~/analyze_new_cluster.sh'
    • PostgreSQL 15 以降の場合:

      su postgres -c 'vacuumdb --all --analyze-in-stages'
      注記

      場合によって、ALTER COLLATION name REFRESH VERSION を使用する必要があります。詳細は、アップストリームのドキュメント を参照してください。

  9. 新しい PostgreSQL サーバーを起動時に自動的に起動させたい場合は、以下を実行してください。

    # systemctl enable postgresql.service
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る