プライマリ候補サーバの手動切り替えの手順を以下に示します。切り替えの手順は、待機センタでデータベース多重化機能を利用する場合と利用しない場合で異なります。
待機センタでデータベース多重化機能を利用する場合
以下の場合には、プライマリ候補サーバの自動切り替えを行いません。
自動切り替え/切り離しを無効化している場合
OS/サーバの生死監視においてハートビート異常でメッセージ通知を選択し、OS/サーバのダウンまたは無応答が発生した場合
上記の場合、プライマリ候補サーバまたはスタンバイサーバ上でmc_ctlコマンドのswitchモードを実行して、接続先切り替えを手動で行います。プライマリ候補サーバの手動切り替えの手順は、データベース多重化運用のプライマリサーバの手動切り替えと同じです。詳細は、“3.4 プライマリサーバの手動切り替え”を参照してください。
保守作業中の手動切り替えなど、切り替え後に旧プライマリ候補サーバが正常である場合は、Mirroring Controllerの再起動を行い、新スタンバイサーバとして組み込みを行ってください。
注意
プライマリ候補サーバの手動切り替えでは、Mirroring Controllerがサーバ識別子.confファイルのstandbycenter_modeパラメータの値を、新プライマリ候補サーバではprimaryに、新スタンバイサーバではstandbyに変更します。
ポイント
自動切り替え/自動切り離しを有効化している場合、任意のタイミングでプライマリ候補サーバの切り替えを行う利用方法が可能です。
待機センタでデータベース多重化機能を利用しない場合
ALTER SYSTEM SET文を実行し、プライマリ候補サーバのpostgresql.auto.confファイルのprimary_conninfoパラメータを無効化します。
例) psqlコマンドを使用した場合の実行例を以下に示します。
postgres=# ALTER SYSTEM SET primary_conninfo='';
pg_ctlコマンドを使用して、プライマリ候補サーバのインスタンスを再起動します。
例)
> pg_ctl restart -D D:\database\inst1
pg_last_wal_replay_lsn関数を使用し、プライマリ候補サーバとスタンバイサーバで反映済みのLSNを確認します。
例) psqlコマンドを使用した場合の出力例を以下に示します。
postgres=# select * from pg_last_wal_replay_lsn(); pg_last_wal_replay_lsn ------------------------ 0/390BA278 (1 行)
手順3のプライマリ候補サーバとスタンバイサーバの反映済みのLSNの差分を確認します。
手順4でプライマリ候補サーバとスタンバイサーバの反映済みのLSNが一致していない場合は、プライマリ候補サーバからスタンバイサーバへすべてのトランザクションログが反映されていないため、手順3から繰り返します。
スタンバイサーバでALTER SYSTEM SET文を実行し、postgresql.auto.confファイルのprimary_conninfoパラメータに指定するストリーミングレプリケーションの接続先を運用センタのプライマリサーバに変更します。
例) psqlコマンドを使用した場合の実行例を以下に示します。
postgres=# ALTER SYSTEM SET primary_conninfo='host=運用センタのプライマリサーバのホスト名,運用センタのスタンバイサーバのホスト名 port=運用センタのプライマリサーバのポート番号,運用センタのスタンバイサーバのポート番号 application_name=待機センタのスタンバイサーバ名 target_session_attrs=read-write';
プライマリ候補サーバでALTER SYSTEM SET文を実行し、postgresql.auto.confファイルのprimary_conninfoパラメータに指定するストリーミングレプリケーションの接続先を待機センタのスタンバイサーバに変更します。
例) psqlコマンドを使用した場合の実行例を以下に示します。
postgres=# ALTER SYSTEM SET primary_conninfo='host=待機センタのスタンバイサーバのホスト名 port=待機センタのスタンバイサーバのポート番号 application_name=待機センタのプライマリ候補サーバ名';
プライマリ候補サーバとスタンバイサーバでpg_ctlコマンドを実行し、インスタンスを再起動します。
例)
> pg_ctl restart -D D:\database\inst1
注意
host、port、application_name、target_session_attrs以外に必要な接続文字列がある場合は、postgresql.auto.confファイルのprimary_conninfoパラメータの設定に含めてください。
ポイント
postgresql.auto.confファイルのprimary_conninfoパラメータのtarget_session_attrsにread-writeを指定することで、待機センタのプライマリ候補サーバがhostおよびportに指定する接続先情報の中から運用センタのプライマリサーバを自動で認識します。運用センタでの切り替え発生時に、待機センタのプライマリ候補サーバが自動的に運用センタの新プライマリサーバに接続できるように、primarycenter_primary_conninfoパラメータのhostおよびportには、運用センタのプライマリサーバとスタンバイサーバの両方を接続先情報として指定してください。
参照
primary_conninfoの詳細については、“PostgreSQL Documentation”の“Setting Up a Standby Server”を参照してください。