Upgrading the PEM Backend Postgres Database

PEMコンポーネントとPEMバックエンドデータベースの両方を更新する場合は、バックエンドデータベースを更新する前に、PEMコンポーネントの更新(サーバーとエージェント)を実行する必要があります。PEMコンポーネントソフトウェアの更新の詳細については、 PEMインストールのアップグレード を参照してください。

注釈

PEM8.0以降では、PostgreSQLまたはEPASバージョン11以降は、バックエンドデータベースサーバーとしてのみサポートされています。したがって、バックエンドデータベースサーバーがバージョン11よりも低い場合、まずバックエンドデータベースサーバーをアップグレードしてから、PEMコンポーネントをアップグレードする必要があります。

このセクションで説明する更新プロセスでは、 pg_upgrade ユーティリティを使用して、バックエンドサーバーのあるバージョンからより新しいバージョンに移行します。 pg_upgrade は、Postgresの任意のバージョン(バージョン9.5以降)と、同じプラットフォームでサポートされるPostgresの後続のリリースとの間の移行を容易にします。

pg_upgrade は、同じタイプのサーバー間のデータ転送をサポートします。たとえば、 pg_upgrade を使用して、PostgreSQL9.6バックエンドデータベースからPostgreSQL11バックエンドデータベースにデータを移動できますが、AdvancedServer11バックエンドデータベースには移動できません。別のタイプのバックエンドデータベースに(つまり、PostgreSQLサーバーからAdvancedServerに)移行する場合は、 PostgresEnterpriseManager™サーバー の移動を参照してください。

pg_upgradeの使用に関する詳細については、次を参照してください。

  1. 更新されたインストーラーをダウンロードして呼び出します。PostgreSQLおよびAdvancedServerのインストーラーは、EDBWebサイトから入手できます。

    アップグレードするサーバーバージョンのインストーラーをダウンロードしたら、PEMサーバーのホストでインストーラーを起動します。インストールウィザードの画面上の指示に従って、Postgresサーバーを構成およびインストールします。

    オプションで、カスタム構築のPostgreSQLサーバーをPEMバックエンドデータベースのホストとして使用できます。ポート 5432 でリッスンするPostgreSQLバックエンドデータベースからアップグレードする場合、新しいサーバーは別のポートでリッスンするように構成する必要があることに注意してください。

  2. 新しいサーバーでSSLユーティリティを構成します。新しいバックエンドデータベースは、現在のバックエンドデータベースが実行しているのと同じバージョンの sslutils を実行している必要があります。EDBインストーラーで使用されるSSLUtilsパッケージは、次の場所からダウンロードできます。

    AdvancedServerを新しいバックエンドデータベースとして使用する場合、 sslutils 拡張子を手動で追加する必要はありません。 sslutils を設定するプロセスはプラットフォーム固有です。

On Linux

  • AdvancedServerバックエンドデータベースでは、sslutils拡張機能がデフォルトでインストールされます。

  • PEMバックエンドデータベースとしてPostgreSQLを使用している場合は、PostgreSQLコミュニティリポジトリにアクセスできることを確認し、次のコマンドを使用します。

    yum install sslutils_<X>
    

<X> はサーバーのバージョンです。

  • PEMバックエンドデータベースとしてPostgreSQLのEDBワンクリックインストーラーを使用している場合

    yum install gcc openssl-devel
    
    Set the value of PATH so it can locate the pg_config program
    export PATH=$PATH:/opt/postgres_inst_dir/<X>/bin/
    
    Move into the sslutils folder, and enter
    make USE_PGXS=1
    make USE_PGXS=1 install
    
    Use psql to create the sslutils extension
    CREATE EXTENSION sslutils
    

Debian10およびUbuntu20では、セキュリティ上の理由により、証明書を受け入れるための要件が増加していることに注意してください。ユーザーがいずれかのマシンにPEMエージェントをインストールする場合、4096ビットRSAキーとsha256署名アルゴリズムのサポートが追加されている ssltuils を1.3にアップグレードする必要があります。 sslutils を1.3にアップグレードしない場合、PEMエージェントがPEMバックエンドデータベースサーバーへの接続に失敗し、エラー ca md too weak が記録される場合があります。

On Windows

sslutils は、元のバックエンドデータベースで sslutils をコンパイルするために使用したのと同じコンパイラを使用して、新しいバックエンドデータベースでコンパイルする必要があります。PostgreSQLワンクリックインストーラー(EDBから)またはAdvancedServerインストーラーを使用してインストールされたPostgresデータベースに移動する場合は、VisualStudioを使用して sslutils をビルドします。PostgreSQL9.5以降にアップグレードする場合は、VisualStudio2010を使用してください。

WindowsでPostgresの特定のバージョンを構築する詳細については、そのバージョンのコアドキュメントを参照してください。コアドキュメントは、PostgreSQLプロジェクトのWebサイトで入手できます。

または、次のEDBWebサイトで:

プロセスの具体的な詳細はプラットフォームとコンパイラーによって異なりますが、各プラットフォームの基本的な手順は同じです。次の例は、32ビットWindowsシステムでのPostgreSQLのOpenSSLサポートのコンパイルを示しています。

OpenSSL拡張機能をコンパイルする前に、使用しているWindowsバージョンのOpenSSLを見つけてインストールする必要があります。OpenSSLインストーラーを起動する前に、前提条件の再配布可能ファイル( vcredist_x86.exe など)をダウンロードしてインストールする必要がある場合があります。

OpenSSLをインストールした後、次から入手できる sslutils ユーティリティパッケージをダウンロードして解凍します。

解凍した sslutils フォルダーをPostgresインストールディレクトリ(つまり C:/ProgramFiles/PostgreSQL/<x.x> )にコピーします

VisualStudioコマンドラインを開き、 sslutils ディレクトリに移動します。次のコマンドを使用して sslutils をビルドします。

SET USE_PGXS=1

SET GETTEXTPATH=\ <path_to_gettext>

SET OPENSSLPATH=\ <path_to_openssl>

SET PGPATH=\ <path_to_pg_installation_dir>

SET ARCH=x86

msbuild sslutils.proj /p:Configuration=Release

どこで:

  • path_to_gettext は、 GETTEXT ライブラリとヘッダーファイルの場所を指定します。

  • path_to_openssl は、opensslライブラリとヘッダーファイルの場所を指定します。

  • path_to_pg_installation_dir は、Postgresインストールの場所を指定します。

たとえば、次の一連のコマンドは、PostgreSQL11サーバーにOpenSSLサポートを構築します。

SET USE_PGXS=1

SET OPENSSLPATH=C:\OpenSSL-Win32

SET GETTEXTPATH="C:\Program Files\PostgreSQL\11"

SET PGPATH="C:\Program Files\PostgreSQL\11"

SET ARCH=x86

msbuild sslutils.proj /p:Configuration=Release

ビルドが完了すると、 sslutils ディレクトリに次のファイルが含まれます。

sslutils--1.3.sql

sslutils--unpackaged--1.3.sql

sslutils--pemagent.sql.in

sslutils.dll

コンパイル済みのsslutilsファイルをインストールに適したディレクトリにコピーします。例えば:

COPY sslutils*.sql "%PGPATH%\share\extension\"

COPY sslutils.dll "%PGPATH%\lib\"

COPY sslutils.control "%PGPATH%\share\extension\"
  1. 古いバックエンドデータベースと新しいバックエンドデータベースの両方のサービスを停止します。

    RHELまたはCentOS6.xで、コマンドラインを開き、スーパーユーザーのIDを引き継ぎます。次のコマンドを入力します。

    /etc/init.d/<service_name> stop
    

    RHELまたはCentOS7.xまたは8.xで、コマンドラインを開き、スーパーユーザーのIDを引き継ぎます。次のコマンドを入力します。

    systemctl <service_name> stop
    

    ここで、 <service_name> はPostgresサービスの名前を指定します。

    Windowsでは、 Services ダイアログを使用してサービスを制御できます。 Services ダイアログを開くには、 Control Panel から System and Security メニューに移動します。 Administrative Tools を選択し、 Services アイコンをダブルクリックします。 Services ダイアログが開いたら、リスト内のサービス名を強調表示し、ダイアログに表示されるオプションを使用してサービスを停止します。

  2. pg_upgrade ユーティリティを使用して、古いバックエンドデータベースと新しいバックエンドデータベースの間で既存のデータのインプレース転送を実行します。サーバーが md5 認証を強制するように構成されている場合、データベーススーパーユーザーの接続プロパティ(およびパスワード)を指定する .pgpass ファイルにエントリを追加するか、 pg_hba.conf ファイルを変更して信頼接続を許可する必要があります pg_upgrade を呼び出す前。 .pgpass ファイルにエントリを作成する方法の詳細については、次の場所にあるPostgreSQLコアドキュメントを参照してください。

    アップグレードプロセス中に、pg_upgradeは一連のログファイルを書き込みます。クラスターの所有者は、書き込み権限があるディレクトリから pg_upgrade を呼び出す必要があります。アップグレードが正常に完了した場合、 pg_upgrade はアップグレードの完了時にログファイルを削除します。アップグレードログファイルを削除しないように pg_upgrade に指示するには、 pg_upgrade を呼び出すときに --retain キーワードを含めます。

    pg_upgrade を呼び出すには、クラスター所有者のIDを想定し、クラスター所有者が書き込み権限を持っているディレクトリに移動して、コマンドを実行します。

    <path_to_pg_upgrade> pg_upgrade
    
    -d <old_data_dir_path>
    
    -D <new_data_dir_path>
    
    -b <old_bin_dir_path> -B <new_bin_dir_path>
    
    -p <old_port> -P <new_port>
    
    -u <user_name>
    

    どこで:

    • path_to_pg_upgrade はpg_upgradeユーティリティの場所を指定します。デフォルトでは、pg_upgradeはPostgresディレクトリの下の bin ディレクトリにインストールされます。

    • old_data_dir_path は、古いバックエンドデータベースのデータディレクトリへの完全なパスを指定します。

    • new_data_dir_path は、新しいバックエンドデータベースのデータディレクトリへの完全なパスを指定します。

    • old_bin_dir_path は、古いバックエンドデータベースのbinディレクトリへの完全なパスを指定します。

    • new_bin_dir_path は、古いバックエンドデータベースのbinディレクトリへの完全なパスを指定します。

    • old_port は、古いサーバーがリッスンしているポートを指定します。

    • new_port は、新しいサーバーがリッスンするポートを指定します。

    • user_name はクラスター所有者の名前を指定します。

    たとえば、次のコマンド:

     C:\>"C:\Program Files\PostgreSQL\11\bin\pg_upgrade.exe"
    
    -d "C:\Program Files\PostgreSQL\9.6\data"
    
    -D "C:\Program Files\PostgreSQL\11\data"
    
    -b "C:\Program Files\PostgreSQL\9.6\bin"
    
    -B "C:\Program Files\PostgreSQL\11\bin"
    
    -p 5432 -P 5433
    
    -U postgres
    

    WindowsシステムでPEMデータベースをPostgreSQL9.6からPostgreSQL11に移行するように pg_upgrade に指示します(バックエンドデータベースがデフォルトの場所にインストールされている場合)。

    呼び出されると、 pg_upgrade はデータを新しいバックエンドデータベースに移動する前に一貫性チェックを実行します。アップグレードが完了すると、 pg_upgrade はアップグレードが完了したことを通知します。

    pg_upgrade オプションの使用、またはアップグレードプロセスのトラブルシューティングの詳細については、以下を参照してください。

  3. 次の証明書ファイルを古いバックエンドデータベースの data ディレクトリから新しいバックエンドデータベースの data ディレクトリにコピーします。

    ca_certificate.crt

    ca_key.key

    root.crt

    root.crl

    server.key

    server.crt

    ターゲットサーバーに配置したら、ファイルには以下で説明する(プラットフォーム固有の)権限が必要です。

    Permissions and Ownership on Linux

    ファイル名

    所有者

    許可

    ca_certificate.crt

    ポストグレス

    -rw-------

    ca_key.key

    ポストグレス

    -rw-------

    root.crt

    ポストグレス

    -rw-------

    root.crl

    ポストグレス

    -rw-------

    server.key

    ポストグレス

    -rw-------

    server.crt

    ポストグレス

    -rw-r--r--

    Linuxでは、証明書ファイルは postgres によって所有されている必要があります。コマンドラインで次のコマンドを使用して、ファイルの所有権を変更できます。

    chown postgres <file_name>
    

    ここで、 file_name は証明書ファイルの名前を指定します。

    server.crt ファイルは、ファイルの所有者のみが変更できますが、すべてのユーザーが読み取ることができます。次のコマンドを使用して、 server.crt ファイルのファイル許可を設定できます。

    chmod 644 server.crt
    

    他の証明書ファイルは、ファイルの所有者のみが変更または読み取ることができます。次のコマンドを使用して、ファイルのアクセス許可を設定できます。

    chmod 600 <file_name>
    

    ここで、 file_name はファイルの名前を指定します。

    Permissions and Ownership on Windows

    Windowsでは、ソースホストから移動した証明書ファイルは、ターゲットホストでPEMサーバーとバックエンドデータベースのインストールを実行したサービスアカウントが所有している必要があります。「インストーラーのコンテキストメニューから選択した」 Run as Administrator オプションを使用してPEMサーバーとPostgresインストーラーを起動した場合、証明書ファイルの所有者は Administrators になります。

    Windowsでファイルのアクセス許可を確認および変更するには、ファイル名を右クリックし、 Properties を選択します。

    The Security tab

    [セキュリティ]タブ

    Security タブに移動し、 Group or user name を強調表示して、割り当てられた権限を表示します。 Edit または Advanced を選択して、選択したユーザーに関連付けられた権限を変更できるダイアログにアクセスします。

  4. postgresql.conf ファイルには、サーバーの動作を指定するパラメーター設定が含まれています。古いサーバーの postgresql.conf ファイルで指定された構成に一致するように、新しいサーバーの postgresql.conf ファイルを変更する必要があります。

    デフォルトでは、 postgresql.conf ファイルは次の場所にあります。

    • LinuxのPostgresバージョンが10未満の場合、 /opt/PostgreSQL/<X>/data

    • LinuxのグラフィカルインストーラーでインストールされたPostgresバージョン10以降の場合、 /opt/PostgreSQL/<X>/data

    • LinuxにRPMをインストールしたPostgresバージョン10以上の場合、 /usr/pgsql/<X>/data

    • WindowsのPostgresバージョンの場合、 C:/Program Files/PostgreSQL/<X>/data

    ここで、 <X> はシステム上のPostgresのバージョンです。

    選択したエディターを使用して、新しいサーバーの postgresql.conf ファイルを更新します。以下のパラメーターを変更します。

    • 元のバックエンドデータベースによって監視されるポート(通常は 5432 )でリッスンする port パラメーター。

    • ssl パラメータを on に設定する必要があります。

    また、次のパラメーターが有効になっていることを確認する必要があります。パラメーターがコメント化されている場合は、各 postgresql.conf ファイルエントリの前からポンド記号を削除します。

    • ssl_cert_file = 'server.crt' # (change requires restart)

    • ssl_key_file = 'server.key' # (change requires restart)

    • ssl_ca_file = 'root.crt' # (change requires restart)

    • ssl_crl_file = 'root.crl'

    インストールには、新しいバックエンドデータベースが古いバックエンドデータベースと同等の方法で動作することを保証するために変更が必要な他のパラメータ設定がある場合があります。 postgresql.conf ファイルを注意深く確認して、新しいサーバーの構成が古いサーバーの構成と一致することを確認します。

  5. pg_hba.conf ファイルには、サーバーがホストベースの認証を強制する方法を指定するパラメーター設定が含まれています。PEMサーバーをインストールすると、インストーラーは pg_hba.conf ファイルを変更し、ファイルの先頭にエントリを追加します。

    # Adding entries for PEM Agens and admins to connect to PEM server

    hostssl pem +pem_user 192.168.2.0/24 md5

    hostssl pem +pem_agent 192.168.2.0/24 cert

    # Adding entries (localhost) for PEM Agens and admins to connect to PEM server

    hostssl pem +pem_user 127.0.0.1/32 md5

    hostssl postgres +pem_user 127.0.0.1/32 md5

    hostssl pem +pem_user 127.0.0.1/32 md5

    hostssl pem +pem_agent 127.0.0.1/32 cert

    デフォルトでは、 pg_hba.conf ファイルは次の場所にあります。

    • LinuxのPostgresバージョンが10未満の場合、 /opt/PostgreSQL/<X>/data

    • LinuxのグラフィカルインストーラーでインストールされたPostgresバージョン10以降の場合、 /Opt/PostgreSQL/<X>/data

    • LinuxにRPMをインストールしたPostgresバージョン10以降の場合、 /var/lib/pgsql/<X>/data

    • LinuxにRPMをインストールしたAdvancedServerバージョン10以降の場合、 /var/lib/edb/as<X>/data

    • WindowsのPostgresバージョンの場合、 C:/Program Files/PostgreSQL/<X>/data

    ここで、 <X> はシステム上のPostgresのバージョンです。

    選択したエディターを使用して、古いサーバーの pg_hba.conf ファイルから新しいサーバーの pg_hba.conf ファイルにエントリをコピーします。

  6. 新しいバックエンドデータベースのサービスを再起動します。

    RHELまたはCentOS7.xまたは8.xで、コマンドラインを開き、スーパーユーザーのIDを引き継ぎます。次のコマンドを入力します。

    systemctl stop <service_name>
    

    service_name は、バックエンドデータベースサーバーの名前です。

    Windowsを使用している場合、 Services ダイアログを使用してサービスを制御できます。 Services ダイアログを開くには、 Control Panel から System and Security メニューに移動します。 Administrative Tools を選択し、 Services アイコンをダブルクリックします。 Services ダイアログが開いたら、リスト内のサービス名を強調表示し、ダイアログで提供されるオプションを使用してサービスを開始します。