Moving the PEM server#
PEMサーバーをあるホストマシンから新しいホストマシンに移動できます。新しいホストターゲット上のPEMサーバーは、元のホストソースと同じバージョンのPEMサーバーインストーラーでインストールする必要があります。同じインストーラーバージョンを使用しない場合、スキーマ不一致エラーが発生する場合があります。
ターゲットサーバーのバックエンドデータベース PostgreSQLまたはEDB Postgres Advanced Serverは、ソースPEMサーバーのバックエンドデータベースと同じタイプとバージョン、または異なるタイプとバージョンを持つことができます。 PostgreSQLホスト上にあるPEMサーバーは、EDB Postgres Advanced Serverホストに移行できます。その逆も可能です。
サーバーの移行を開始する前に、ソースホスト、ターゲットホスト、およびPEMエージェントのホスト間のファイアウォールがサービス間の接続を許可していることを確認してください。
ターゲットホストを準備します。
ターゲットホストでPEMサーバーのインストーラーを起動します。ソースPEMサーバーのインストール時に使用したものと同じバージョンのPEMサーバーインストーラーを使用する必要があります。
ターゲットサーバーのバックエンドデータベースは、ソースのバックエンドデータベースとは異なるバージョンまたはタイプを持つことができます。新しいPEMサーバーが元のサーバーと同じタイプのバックエンドデータベースにない場合、新しいバージョンのsslutils拡張機能が新しいサーバーホストにインストールされていることを確認する必要があります。 PEMインストーラーと共に配布されるsslutilsのバージョンは、 EDB website から無料でダウンロードできます。
PEMサーバーまたはsslutils拡張機能のインストールについては、 PEM installation steps を参照してください。
新しいPEMサーバーから既存のスキーマを削除します。
移行プロセスは、ターゲットPEMサーバー上のソースPEMサーバーからpem
、pemdata 、およびpemhistory
スキーマを再作成します。移動の準備をするには、
psqlクライアントを使用して、ターゲットホスト上のpem
データベースからこれらのスキーマを削除します。コマンドラインで、または
Postgres Enterprise Manager > SQL Shell (psql) を選択して、
psqlクライアントを開くことができます。
psqlクライアントが開いたら、データベーススーパーユーザーとしてpem
バックエンドデータベースに接続します。ターゲットホスト上のpem
データベースに接続した後、スキーマを削除します。
DROP SCHEMA pem CASCADE;
DROP SCHEMA pemdata CASCADE;
DROP SCHEMA pemhistory CASCADE;
スキーマを削除するときは、CASCADE
キーワードを含め、すべての依存オブジェクトを削除するようにサーバーに指示する必要があります。コマンドを実行すると、
psqlクライアントは依存オブジェクトのリストを表示します。クライアントは、DROP SCHEMA
を表示することにより、各スキーマが削除されることを確認します。
新しいPEMサーバーでPEMエージェントを準備します。
PEMサーバーを移動する前に、ソースPEMサーバーによって監視されているエージェントの数を特定し、ターゲットサーバーでその数のエージェント1つ未満のIDを作成する必要があります。
PEMサーバーによって監視されるPEMエージェントの合計数を検出するには、
psqlクライアントを使用してソースホスト上のpem
データベースに接続し、pem.agent テーブルを照会します。
SELECT id FROM pem.agent WHERE active = true;
元のPEMサーバーにあるエージェントの数から1つ未満を手動で作成する必要があります。
PEMサーバーインストーラーは、ターゲットホストに1つのエージェントを作成します。たとえば、ソースサーバーに3つのエージェントが含まれている場合、さらに2つのエージェントを手動で作成する必要があります。ターゲットサーバー上のpem
データベースとのpsqlセッションを開き、必要なエージェントを作成します。
CREATE USER agent<X>;
<X> はエージェント番号を指定します。 agent1
は、PEMサーバーインストーラーによってターゲットホストに作成されます。
次に、 GRANT
コマンドを使用して、ターゲットPEMサーバーにある各エージェントにpem_agent
権限を割り当てます。
GRANT pem_agent TO agent<X>;
<X> はエージェント番号を指定します。
ソースPEMサーバーのバックアップスクリプトを生成します。
pg_dumpユーティリティを使用して、ターゲットホストでpem
データベースを再作成するために必要なコマンドを含むスクリプトを生成できます。デフォルトでは、
pg_dumpはPostgresインストールの下のbin
ディレクトリにインストールされます。 pg_dumpを呼び出すには、bin
ディレクトリで次のように入力します。
pg_dump -U <user_name> <db_name> > <file_name>
そこで
<user_name>は、PEMバックエンドデータベースのデータベーススーパーユーザーの名前を指定します。 -<db_name>は、PEMバックエンドデータベースの名前を指定します。 -<file_name>は、pg_dumpによって生成されたスクリプトの名前を指定します。
プロンプトが表示されたら、指定したユーザーに関連付けられたパスワードを入力します。
表示されているコマンドは、 pg_dumpに実行時に pem
データベースを再作成するスクリプトを生成するように指示します。スクリプトの名前はbackup.sql
で、 tmp ディレクトリに作成されます。
pg_dumpは、ユーザーpostgresの資格情報を使用してサーバーに接続しています。
pg_dumpユーティリティを呼び出しても、現在のデータベースユーザーは中断されません。
バックアップをターゲットホストに移動します。
pg_dumpユーティリティによって生成されたスクリプトをPEMサーバーのターゲットホストに移動します。
ターゲットホストでバックアップを復元します。
ターゲットホストで、Postgresバックエンドデータベースインストールディレクトリの下のbin
ディレクトリで、
psql起動し、pg_dumpユーティリティによって生成されたスクリプトを実行します。
psql -U <user_name> -d pem -f <file_name>
そこで
<user_name>は、データベースのスーパーユーザーの名前を指定します。指定されたユーザーは、バックエンドデータベースに対する接続特権を持っている必要があります。 -<file_name>は、pg_dumpによって生成されたバックアップスクリプトへの完全なパスを指定します。
プロンプトが表示されたら、データベースのスーパーユーザーに関連付けられたパスワードを入力します。
この例では、 psqlクライアントを使用してbackup.sql
という名前のスクリプトを呼び出し、 pem
データベースを再作成します。スクリプトは、データベーススーパーユーザーpostgresに関連付けられた特権を使用して呼び出されます。
ターゲットホストでデータベースサーバーを停止します。
RHEL 8.xでPEMサーバーを停止するには、次のコマンドを使用します。
systemctl stop <service_name>
<service_name>
は、バックエンドデータベースサーバーの名前を指定します。
PostgreSQLバックエンドデータベースの場合、サービス名はpostgresql-<x>
です。 EDB Postgres Advanced
Serverバックエンドデータベースの場合、サービス名はedb-as-<X> で、
<X> はバージョン番号を指定します。
Windowsを使用している場合は、[ Services ]ダイアログボックスを使用してServicesを制御できます。 [ Services ]ダイアログボックスを開くには、Control Panelから System and Security > Administrative Tools を選択します。 Services アイコンをダブルクリックします。 [ Services ]ダイアログボックスで、リストからサービス名を選択し、[ Stop ]を選択します。
証明書ファイルをターゲットホストにコピーします。
ターゲットホストのインストール時に作成される証明書ファイルを、ソースホストの証明書ファイルに置き換える必要があります。次のファイルをソースPEMサーバーからターゲットPEMサーバーにコピーします。
ca_certificate.crtca_key.keyroot.crtroot.crlserver.keyserver.crt
ターゲットクラスタのバックエンドデータベースを提供するPostgresインストールの下のdata
ディレクトリにファイルをコピーします。
Linuxでは、ファイルは次の場所にあります。
/var/lib/pgsql/<X>/data/
Windowsでは、ファイルは次の場所にあります。
C:\Program Files\PostgreSQL\<X>\data
そこで
<X> は、システム上のPostgresSQLのバージョンを指定します。
ファイルは既にターゲットクラスタに存在します。コピーを実行する前に既存のファイルを削除するか、既存のファイルをソースサーバーのファイルで上書きします。ターゲットサーバーに配置されたら、ファイルには、表示されているプラットフォーム固有の権限が必要です。
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でファイルのアクセス許可を確認および変更するには、ファイル名を右クリックし、 プロパティ を選択します。 [ Security ]タブで、グループまたはユーザー名を選択して、割り当てられたアクセス許可を表示します。 Edit または Advanced を選択して、選択したユーザーに関連付けられている権限を変更できるダイアログボックスを開きます。
PEMエージェント証明書ファイルをPEMサーバーホストに移動します。
ソースPEMサーバーのPEMエージェントが使用する証明書ファイルをターゲットホストに移動する必要があります。この手順はプラットフォーム固有です。
Linuxの場合
agent1.key およびagent1.crt
ファイルをソースホストからターゲットホストにコピーします。デフォルトでは、Linuxでは、ファイルは/root/.pem
にインストールされます。ファイルをターゲットホスト上の同じディレクトリにコピーします。
ファイルの所有権とファイルのアクセス許可を次のように設定する必要があります。
File name |
Owner |
Permissions |
|---|---|---|
agent1.key |
root |
-rw------- |
agent1.crt |
root |
-rw-r--r-- |
必要に応じて、/root/.pem
に移動し、次のコマンドを使用してagent1.key
ファイルの権限と所有権を変更します。
chmod 600 agent1.key
chown root agent1.key
次のコマンドを使用して、agent1.crt
ファイルの権限と所有権を変更します。
chmod 644 agent1.crt
chown root agent1.crt
**Windowsの場合*
agent1.key およびagent1.crt
ファイルをソースホストからターゲットホストにコピーします。
Windowsでは、ファイルは次の場所にあります。
C:\Users\<user_name>\AppData\Roaming\pem
user_name は、PEMインストーラーを呼び出したユーザーの名前です。
ターゲットマシン上の証明書ファイルに関連付けられている所有権と権限は、ソースマシン上の証明書ファイルの所有権と権限と一致する必要があります。インストーラーコンテキストメニューの Run as Administrator を使用してPEMサーバーとPostgresインストーラーを呼び出した場合、エージェント証明書ファイルの所有者はAdministratorsです。
Windowsでファイルのアクセス許可を確認および変更するには、ファイル名を右クリックし、 プロパティ を選択します。 [ Security ]タブで、グループまたはユーザー名を選択して、割り当てられたアクセス許可を表示します。 Edit または Advanced を選択して、選択したユーザーに関連付けられている権限を変更できるダイアログボックスを開きます。
ターゲットホスト上の
pg_hba.confファイルを更新します。
ターゲットホスト上のpg_hba.conf
ファイルを変更して、各PEMエージェントからの接続を許可します。デフォルトでは、pg_hba.conf
ファイルはPostgresインストールの下のデータディレクトリにあります。
ターゲットホストでサーバーを起動します。
pg_hba.conf
ファイルを変更した後、サーバーを再起動して変更を有効にする必要があります。
Linuxでデータベースサーバーを再起動するには、次のコマンドを使用します。
/etc/init.d/<service_name> start
service_name は、バックエンドデータベースサーバーの名前です。
Windowsでは、[ Services ]ダイアログボックスを使用してServicesを制御できます。 [ Services ]ダイアログボックスを開くには、Control Panelで System and Security > Administrative Tools を選択します。 Services アイコンをダブルクリックします。 [ Services ]ダイアログボックスが開いたら、リストからサービス名を選択し、サービスを開始します。
監視対象エージェントを新しいPEMサーバーホストに接続します。
既存のPEMエージェントに新しいPEMサーバーホストに接続するよう指示するには、以下を行う必要があります。
PEMエージェントホストが新しいPEMサーバーホストに接続できることを確認します。
PEMエージェントまたはエージェント構成ファイルを使用して各Windowsホストのレジストリを変更するPEMエージェントを使用する各Linuxホストで、新しいPEMサーバーのIPアドレスとポートを指定します。
PEMエージェントのサービスを再起動します。これらの手順はプラットフォーム固有です。
PEMエージェントがLinuxにある場合#
エディターの選択を使用して、 agent.cfg ファイルを変更し、
pem_host およびpem_port
パラメーターでPEMサーバーの新しいIPアドレスとポート番号を指定します。
デフォルトでは、 agent.cfg ファイルは次の場所にあります。
/usr/edb/pem/agent/etc/agent.cfg
The agent.cfg file#
agent.cfg
ファイルを変更した後、PEMエージェントサービスを再起動する必要があります。
Linuxコマンドラインでpemagent
サービススクリプトを使用して、サービスをリスタートできます。
/etc/init.d/pemagent restart
PEMエージェントがWindowsにある場合#
監視対象ノードのWindowsレジストリを変更する前に、PEMエージェントのホスト上のファイアウォールがPEMサーバーへの接続を許可していることを確認してください。
PEMエージェントホストがPEMサーバーホストに接続できることを確認した後、
Windows Registry Editorを使用してPEM_HOST およびPEM_PORT
エントリを確認および編集し、PEMサーバーが使用するホストおよびポートを正しく識別できることを確認できます。
Registry Editorを開くには、 Windowsの[ Run
]ダイアログボックスまたはWindowsの[スタート]メニューの検索ボックスにregedit
と入力します。レジストリツリーコントロールをナビゲートして、レジストリエントリを表示または変更します。
PEMエージェントのレジストリエントリは次の場所にあります。HKEY_LOCAL_MACHINE\Software\EnterpriseDB\PEM\agent
PEM_HOST およびPEM_PORT
エントリは、ターゲットホスト上の新しいPEMサーバーのアドレスとポート番号を指定する必要があります。レジストリエントリを変更するには、エントリ名を右クリックし、コンテキストメニューから
Modify を選択します。次に、[ Edit StringのEdit String
]ダイアログボックスを使用して、エントリの値を変更します。完了したら、[
OK ]を選択します。
レジストリを変更した後、PEMエージェントのサービスを再起動する必要があります。
Windowsコントロールパネルからアクセスする[ Services
]ダイアログボックスを使用して、
Postgres Enterprise Manager - pemagent サービスを再起動できます。
サーバーを稼働した後、インストールされているPEMクライアントの接続プロパティを変更して、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;