Upgrading the PEM backend Postgres database#
PEMコンポーネントとPEMバックエンドデータベースを更新する場合は、バックエンドデータベースを更新する前にサーバーとエージェントでPEMコンポーネントの更新を実行します。 PEMコンポーネントソフトウェアの更新の詳細については、 Upgrading a PEM installation on high-availability mode using HTTPD を参照してください。
注釈
バックエンドデータベースサーバーがバージョン13より前の場合、最初にバックエンドデータベースサーバーをアップグレードし、次にPEMコンポーネントをアップグレードします。
バックエンドデータベースサーバーをアップグレードした後、PEM Webインターフェイスでサーバーを作成中にこのエラーが発生した場合
Error - User does not have enough permission to add new server.
Please contact the administrator to grant pem_database_server_registration role
to the enterprisedb user.
ロールを更新し、適切な権限を付与することにより、エラーを解決します。
UPDATE pem.roles SET rolid = pr.oid FROM pg_roles pr WHERE pr.rolname = pem_ || component;
更新プロセスでは、 pg_upgradeユーティリティを使用して、バックエンドサーバーのあるバージョンからより新しいバージョンに移行します。 pg_upgradeは、サポートされているPostgresのバージョンと、同じプラットフォームでサポートされているPostgresの後続のリリース間の移行を有効にします。
pg_upgradeは、同じタイプのサーバー間のデータの転送をサポートしています。たとえば、 pg_upgradeを使用して、PostgreSQL 13バックエンドデータベースからPostgreSQL 14バックエンドデータベースにデータを移動できますが、 EDB Postgres Advanced Server 14バックエンドデータベースには移動できません。別の種類のバックエンドデータベースに移行する場合PostgreSQLサーバーからEDB Postgres Advanced Serverなどに移行する場合、 Moving the PEM server を参照してください。
pg_upgradeの使用の詳細については、 pg_upgrade を参照してください。
更新されたインストーラーをダウンロードして起動します。 PostgreSQLおよびEDB Postgres Advanced Serverのインストーラーは、 EDB website から入手できます。
アップグレードするサーバーバージョンのインストーラーをダウンロードした後、PEMサーバーのホストでインストーラーを起動します。インストールウィザードの画面上の指示に従って、Postgresサーバーを構成およびインストールします。
オプションで、カスタム構築のPostgreSQLサーバーをPEMバックエンドデータベースのホストとして使用できます。ポート5432でリッスンするPostgreSQLバックエンドデータベースからアップグレードする場合、新しいサーバーは別のポートでリッスンするように構成する必要があります。
新しいサーバーでSSLユーティリティを構成します。新しいバックエンドデータベースは、現在のバックエンドデータベースが実行しているものと同じバージョンのsslutilsを実行している必要があります。
sslutilsの構成sslutilsはプラットフォーム固有です。 sslutilsのインストール方法の詳細については、 installation documentation for your platform を参照してください。
古いバックエンドデータベースと新しいバックエンドデータベースの両方のサービスを停止します。
RHEL 8.xで、コマンドラインを開き、スーパーユーザーのIDを引き継ぎます。次のコマンドを入力します。
systemctl <service_name> stop
<service_name> は、Postgresサービスの名前を指定します。
Windowsでは、[ Services ]ダイアログボックスを使用してServicesを制御できます。サービスを停止するには 1. Control Panelで、 System and Security > Administrative Tools を選択します。 1. Services をダブルクリックします。 1. [ Services ]ダイアログボックスで、サービス名を選択し、[ Stop ]を選択します。
pg_upgradeユーティリティを使用して、古いバックエンドデータベースと新しいバックエンドデータベース間で既存のデータのインプレース転送を実行します。サーバーがmd5認証を強制するように構成されている場合、データベースのスーパーユーザーの接続プロパティおよびパスワードを指定するエントリーを
.pgpassファイルに追加する必要があります。または、pg_upgradeを呼び出す前に、pg_hba.confファイルを変更して信頼接続を許可する必要がある場合があります。.pgpassファイルへのエントリーの作成の詳細については、 PostgreSQL core documentation を参照してください。
アップグレードプロセス中に、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は、クラスター所有者の名前を指定します。
たとえば、次のコマンドは、 WindowsシステムでPostgreSQL 9.6からPostgreSQL 11にPEMデータベースを移行するようにpg_upgradeに指示しますバックエンドデータベースがデフォルトの場所にインストールされている場合。
C:\>"C:\Program Files\PostgreSQL1\bin\pg_upgrade.exe"
-d "C:\Program Files\PostgreSQL0\data"
-D "C:\Program Files\PostgreSQL1\data"
-b "C:\Program Files\PostgreSQL0\bin"
-B "C:\Program Files\PostgreSQL1\bin"
-p 5432 -P 5433
-U postgres
pg_upgradeは、呼び出されると、データを新しいバックエンドデータベースに移動する前に一貫性チェックを実行します。アップグレードが完了すると、 pg_upgradeはアップグレードが完了したことを通知します。
pg_upgradeオプションの使用またはアップグレードプロセスのトラブルシューティングの詳細については、 pg_upgrade を参照してください。
次の証明書ファイルを、古いバックエンドデータベースの
dataディレクトリから新しいバックエンドデータベースのdataディレクトリにコピーします。
ca_certificate.crt
ca_key.key
root.crt
root.crl
server.key
server.crt
ターゲットサーバーに配置されたら、ファイルに次のプラットフォーム固有の権限があることを確認します。
Linuxでの権限と所有権
File name |
Owner |
Permissions |
|---|---|---|
ca_certificate.crt |
postgres |
-rw------- |
ca_key.key |
postgres |
-rw------- |
root.crt |
postgres |
-rw------- |
root.crl |
postgres |
-rw------- |
server.key |
postgres |
-rw------- |
server.crt |
postgres |
-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 は、ファイルの名前を指定します。
Windowsでの権限と所有権
Windowsでは、ターゲットホストでPEMサーバーとバックエンドデータベースのインストールを実行したサービスアカウントは、ソースホストから移動した証明書ファイルを所有している必要があります。インストーラーのコンテキストメニューから Run as Administrator を使用してPEMサーバーとPostgresインストーラーを呼び出した場合、証明書ファイルの所有者はAdministratorsです。
Windowsでファイルのアクセス許可を確認および変更するには、ファイル名を右クリックし、 プロパティ を選択します。
[ セキュリティ ]タブで、グループまたはユーザー名を選択して、割り当てられたアクセス許可を表示します。 Edit または Advanced を選択して、選択したユーザーに関連付けられている権限を変更できるダイアログボックスを開きます。
postgresql.confファイルには、サーバーの動作を指定するパラメーター設定が含まれています。古いサーバーのpostgresql.confファイルで指定された構成と一致するように、新しいサーバーのpostgresql.confファイルを変更します。
選択したエディターを使用して、新しいサーバーのpostgresql.conf
ファイルを更新します。次のパラメーターを変更します。
元のバックエンドデータベースによって監視されるポートでリッスンする
portパラメーター通常は5432に設定します。onに設定するsslパラメーター
また、次のパラメーターが有効になっていることを確認する必要があります。パラメーターがコメントアウトされている場合は、各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 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
ファイルから新しいサーバーのpg_hba.conf
ファイルにエントリをコピーします。
新しいバックエンドデータベースのサービスを再起動します。
RHEL 8.xでは、スーパーユーザーとしてコマンドラインで次のように入力します。
systemctl restart <service_name>
service_name は、バックエンドデータベースサーバーの名前です。
Windowsを使用している場合は、 Services ダイアログボックスを使用してサービスを制御できます。1. Control Panelで、 System and Security > Administrative Tools を選択します。 1. Services アイコンをダブルクリックします。 1. [ Services ]ダイアログボックスで、サービス名を選択し、サービスを開始します。