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の使用に関する詳細については、次を参照してください。
更新されたインストーラーをダウンロードして呼び出します。PostgreSQLおよびAdvancedServerのインストーラーは、EDBWebサイトから入手できます。
アップグレードするサーバーバージョンのインストーラーをダウンロードしたら、PEMサーバーのホストでインストーラーを起動します。インストールウィザードの画面上の指示に従って、Postgresサーバーを構成およびインストールします。
オプションで、カスタム構築のPostgreSQLサーバーをPEMバックエンドデータベースのホストとして使用できます。ポート
5432でリッスンするPostgreSQLバックエンドデータベースからアップグレードする場合、新しいサーバーは別のポートでリッスンするように構成する必要があることに注意してください。新しいサーバーで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 sslutilsDebian10および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\"
古いバックエンドデータベースと新しいバックエンドデータベースの両方のサービスを停止します。
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ダイアログが開いたら、リスト内のサービス名を強調表示し、ダイアログに表示されるオプションを使用してサービスを停止します。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オプションの使用、またはアップグレードプロセスのトラブルシューティングの詳細については、以下を参照してください。次の証明書ファイルを古いバックエンドデータベースの
dataディレクトリから新しいバックエンドデータベースのdataディレクトリにコピーします。ca_certificate.crtca_key.keyroot.crtroot.crlserver.keyserver.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を選択します。
[セキュリティ]タブ¶
Securityタブに移動し、Group or user nameを強調表示して、割り当てられた権限を表示します。EditまたはAdvancedを選択して、選択したユーザーに関連付けられた権限を変更できるダイアログにアクセスします。postgresql.confファイルには、サーバーの動作を指定するパラメーター設定が含まれています。古いサーバーのpostgresql.confファイルで指定された構成に一致するように、新しいサーバーのpostgresql.confファイルを変更する必要があります。デフォルトでは、
postgresql.confファイルは次の場所にあります。LinuxのPostgresバージョンが10未満の場合、
/opt/PostgreSQL/<X>/dataLinuxのグラフィカルインストーラーでインストールされたPostgresバージョン10以降の場合、
/opt/PostgreSQL/<X>/dataLinuxにRPMをインストールしたPostgresバージョン10以上の場合、
/usr/pgsql/<X>/dataWindowsの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ファイルを注意深く確認して、新しいサーバーの構成が古いサーバーの構成と一致することを確認します。pg_hba.confファイルには、サーバーがホストベースの認証を強制する方法を指定するパラメーター設定が含まれています。PEMサーバーをインストールすると、インストーラーはpg_hba.confファイルを変更し、ファイルの先頭にエントリを追加します。# Adding entries for PEM Agens and admins to connect to PEM serverhostssl pem +pem_user 192.168.2.0/24 md5hostssl pem +pem_agent 192.168.2.0/24 cert# Adding entries (localhost) for PEM Agens and admins to connect to PEM serverhostssl pem +pem_user 127.0.0.1/32 md5hostssl postgres +pem_user 127.0.0.1/32 md5hostssl pem +pem_user 127.0.0.1/32 md5hostssl pem +pem_agent 127.0.0.1/32 certデフォルトでは、
pg_hba.confファイルは次の場所にあります。LinuxのPostgresバージョンが10未満の場合、
/opt/PostgreSQL/<X>/dataLinuxのグラフィカルインストーラーでインストールされたPostgresバージョン10以降の場合、
/Opt/PostgreSQL/<X>/dataLinuxにRPMをインストールしたPostgresバージョン10以降の場合、
/var/lib/pgsql/<X>/dataLinuxにRPMをインストールしたAdvancedServerバージョン10以降の場合、
/var/lib/edb/as<X>/dataWindowsのPostgresバージョンの場合、
C:/Program Files/PostgreSQL/<X>/data
ここで、
<X>はシステム上のPostgresのバージョンです。選択したエディターを使用して、古いサーバーの
pg_hba.confファイルから新しいサーバーのpg_hba.confファイルにエントリをコピーします。新しいバックエンドデータベースのサービスを再起動します。
RHELまたはCentOS7.xまたは8.xで、コマンドラインを開き、スーパーユーザーのIDを引き継ぎます。次のコマンドを入力します。
systemctl stop <service_name>
service_nameは、バックエンドデータベースサーバーの名前です。Windowsを使用している場合、
Servicesダイアログを使用してサービスを制御できます。Servicesダイアログを開くには、Control PanelからSystem and Securityメニューに移動します。Administrative Toolsを選択し、Servicesアイコンをダブルクリックします。Servicesダイアログが開いたら、リスト内のサービス名を強調表示し、ダイアログで提供されるオプションを使用してサービスを開始します。