3.9. PostgreSQL インスタンスを以前の RHEL バージョンから RHEL 10 上の PostgreSQL 16 に移行する


RHEL 9 で PostgreSQL バージョン 16 未満をすでに実行しており、データベースソフトウェアを RHEL 10 を実行するホストに移動する場合は、データベースを移行できます。

次の移行方法を使用できます。

重要

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 コマンドの出力を比較します。

手順

  1. 移行する既存の PostgreSQL インスタンスがあるホストで、次の手順を実行します。

    1. すべてのデータベースを /var/lib/pgsql/pgdump_file.sql ファイルにエクスポートします。

      # su - postgres -c "pg_dumpall > /var/lib/pgsql/pgdump_file.sql"
      Copy to Clipboard Toggle word wrap
    2. エクスポートされたファイルを確認します。

      # su - postgres -c 'less "/var/lib/pgsql/pgdump_file.sql"'
      Copy to Clipboard Toggle word wrap
    3. 前の手順で作成したデータベースダンプと 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/
      Copy to Clipboard Toggle word wrap
  2. RHEL 10 ホストの場合:

    1. postgresql-server パッケージをインストールします。

      # dnf install postgresql-server
      Copy to Clipboard Toggle word wrap
    2. /var/lib/pgsql/data/ ディレクトリーを初期化します。

      # postgresql-setup --initdb
      Copy to Clipboard Toggle word wrap
    3. コピーした設定ファイルを /var/lib/pgsql/data/ ディレクトリーに移動します。

      # mv /tmp/pg_hba.conf \
           /tmp/pg_ident.conf \
           /tmp/postgresql.conf \
           /var/lib/pgsql/data/
      Copy to Clipboard Toggle word wrap
    4. /var/lib/pgsql/data/ directory 内のコンテンツの正しい所有権を確認します。

      # chown -R postgres:postgres /var/lib/pgsql/data/
      Copy to Clipboard Toggle word wrap
    5. /var/lib/pgsql/data/ の SELinux コンテキストを復元します。

      # restorecon -Rv /var/lib/pgsql/data/
      Copy to Clipboard Toggle word wrap
    6. postgresql サービスを有効にして起動します。

      # systemctl enable --now postgresql.service
      Copy to Clipboard Toggle word wrap
    7. postgres ユーザーとしてデータをインポートします。

      # su - postgres -c 'psql -f /tmp/pgdump_file.sql postgres'
      Copy to Clipboard Toggle word wrap
    8. データベースを検証し、PostgreSQL サーバーを使用するアプリケーションが期待どおりに動作することを確認します。

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 コマンドの出力を比較します。

手順

  1. 移行する既存の PostgreSQL インスタンスがあるホストで、次の手順を実行します。

    1. postgresql サービスを停止します。

      # systemctl stop postgresql.service
      Copy to Clipboard Toggle word wrap
    2. /var/lib/pgsql/ ディレクトリーに移動し、data サブディレクトリーをバックアップします。

      # cd /var/lib/pgsql/
      # tar -zcf ~/pgdata.bak.tar.gz data/
      Copy to Clipboard Toggle word wrap
    3. ~/pgdata.bak.tar.gz アーカイブを RHEL 10 ホストにコピーします。以下に例を示します。

      # scp ~/pgdata.bak.tar.gz <user>@<rhel_10_host>:/tmp/
      Copy to Clipboard Toggle word wrap
  2. RHEL 10 ホストの場合:

    1. 必要なパッケージをインストールします。

      # dnf install postgresql-server postgresql-upgrade
      Copy to Clipboard Toggle word wrap

      postgresql-upgrade パッケージは、移行中に必要な PostgreSQL 13 サーバーを提供します。

    2. サードパーティーの PostgreSQL サーバーモジュールを使用する場合は、postgresql-devel および postgresql-upgrade-devel の両方のパッケージに対してビルドし、インストールします。
    3. postgresql サービスが停止していることを確認します。

      # systemctl stop postgresql.service
      Copy to Clipboard Toggle word wrap
    4. /var/lib/pgsql/ ディレクトリーに移動し、以前のホストからバックアップされたデータディレクトリーを抽出します。

      # cd /var/lib/pgsql/
      # tar -zxf /tmp/pgdata.bak.tar.gz
      Copy to Clipboard Toggle word wrap
    5. オプション: /tmp/pgdata.bak.tar.gz アーカイブを削除します。

      # rm /tmp/pgdata.bak.tar.gz
      Copy to Clipboard Toggle word wrap
    6. アップグレードプロセスを実行します。

      # postgresql-setup --upgrade
      Copy to Clipboard Toggle word wrap

      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 バージョンと互換性があることを確認します。

    7. postgresql サービスを有効にして起動します。

      # systemctl enable --now postgresql.service
      Copy to Clipboard Toggle word wrap
    8. すべてのデータベースをクリーンアップして分析します。

      # su postgres -c 'vacuumdb --all --analyze-in-stages'
      Copy to Clipboard Toggle word wrap
    9. データベースを検証し、PostgreSQL サーバーを使用するアプリケーションが期待どおりに動作することを確認します。
    10. オプション: 移行前のデータベースと設定ファイルが含まれている /var/lib/pgsql/data-old/ ディレクトリーを削除します。

      # rm -r /var/lib/pgsql/data-old/
      Copy to Clipboard Toggle word wrap
    11. オプション: postgresql-upgrade パッケージを削除します。

      # dnf remove postgresql-upgrade
      Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

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

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

会社概要

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

Theme

© 2025 Red Hat