運用センタでOSやミドルウェアのパッチ適用などの保守作業を行う場合は、センタ切り替えを行い、アプリケーション業務を待機センタに引き継ぐことで、保守作業中に業務を継続することができます。
保守作業の終了後は、必要に応じてセンタの切り戻しを行います。
注意
保守作業が予定時間を超えてしまうなどの原因で、待機センタでトランザクションログが再利用された場合には、ストリーミングレプリケーションの再開ができなくなります。その場合は、運用センタのインスタンスを再作成する必要があります。
運用センタ保守時のセンタ切り替えの手順を以下に示します。
アプリケーション業務の停止
運用センタでのアプリケーション業務を停止します。
postgresql.confファイルの編集
運用センタのプライマリサーバにおいて、postgresql.confファイルのfollowing_async_walsendersパラメータを削除するか、またはoffを指定します。変更後、pg_ctlコマンドをreloadモードで実行し、設定変更を反映します。
参考
インスタンス停止時にもトランザクションログが生成されます。following_async_walsendersパラメータを有効化しておくと、インスタンス停止時に生成されたトランザクションログが待機センタへ反映されません。このため、インスタンス停止前にfollowing_async_walsendersパラメータを無効化しておきます。
インスタンスとMirroring Controllerの停止、およびMirroring Controllerの自動起動・停止の無効化
mc_ctlコマンドをstopモードで実行し、運用センタのプライマリサーバとスタンバイサーバのインスタンス、およびMirroring Controllerを同時に停止します。
Mirroring Controllerの自動起動・停止を設定している場合は、運用センタで有効化している設定を無効化します。
インスタンスの状態確認
運用センタのプライマリサーバのインスタンスが通常停止していることを確認します。
運用センタのプライマリサーバでpg_controldataコマンドを実行し、“Database cluster state”が“shut down”であることを確認します。
トランザクションログの位置を確認
待機センタの各サーバにトランザクションログが反映されていることを確認します。ログの反映状況は、以下の手順で確認します。
手順4で実行したpg_controldataコマンドの結果から“Latest checkpoint location”に出力されたLSNを確認します。
待機センタのプライマリ候補サーバ、およびスタンバイサーバでpg_last_wal_replay_lsn関数を実行し、実行結果のLSNが、手順aのLSNよりも新しいことを確認します。
ただし、手順bのLSNが手順aのLSNよりも新しくない場合、運用センタのプライマリサーバから待機センタへすべてのトランザクションログが反映されていないため、運用センタのインスタンスを再起動して、手順3から再度、操作を実施します。
Mirroring Controller裁定プロセスの停止と自動起動・停止の無効化
mc_arbコマンドを実行し、運用センタのMirroring Controller裁定プロセスを停止します。
mc_arbコマンド、またはWindowsサービスを使用して、運用センタのMirroring Controller裁定プロセスを停止します。
Mirroring Controller裁定プロセスの自動起動・停止を設定している場合は、運用センタで有効化している設定を無効化します。
保守作業の実施
運用センタで保守作業を開始します。
プライマリ候補サーバの昇格
pg_ctlコマンドをpromoteモードで実行し、待機センタのプライマリ候補サーバを昇格します。
例)
$ pg_ctl promote -D /database/inst1
postgresql.confファイルの編集
プライマリ候補サーバとスタンバイサーバにおいて、postgresql.confファイルのrestart_after_crashパラメータにoffを指定し、pg_ctlコマンドをreloadモードで実行し、設定変更を反映します。
Mirroring Controller裁定プロセスの起動と自動起動・停止の有効化
mc_arbコマンドを実行し、待機センタのMirroring Controller裁定プロセスを起動します。
例)
$ mc_arb start -M /mcarb_dir/arbiter1
mc_arbコマンド、またはWindowsサービスを使用して、待機センタのMirroring Controller裁定プロセスを起動します。
例)
> mc_arb start -M D:\mcarb_dir\arbiter1
Mirroring Controller裁定プロセスの自動起動・停止を設定している場合は、待機センタで無効化している設定を有効化します。
Mirroring Controllerの起動と自動起動・停止の有効化
mc_ctlコマンドを--mc-onlyオプションを指定して実行し、待機センタのプライマリ候補サーバ、およびスタンバイサーバのMirroring Controllerのみを起動します。
例)
$ mc_ctl start -M /mcdir/inst1 --mc-only
Mirroring Controllerの自動起動・停止を設定している場合は、待機センタで無効化している設定を有効化します。
アプリケーション業務の再開
待機センタのプライマリ候補サーバでアプリケーション業務を再開します。
recovery.confファイルの作成
運用センタのプライマリサーバのデータ格納先ディレクトリにrecovery.confファイルを作成します。指定するパラメータと内容は以下のとおりです。
パラメータ | 指定内容 |
---|---|
standby_mode | ‘on' |
primary_conninfo | ‘host=待機センタのプライマリ候補サーバのIPアドレス, 待機センタのスタンバイサーバのIPアドレス port=待機センタのプライマリ候補サーバのポート番号, 待機センタのスタンバイサーバのポート番号 target_session_attrs=read-write user=ユーザー名 password=パスワード application_name=運用センタのプライマリサーバ名' |
recovery_target_timeline | ‘latest' |
restore_command | ‘インストールディレクトリ/bin/pgx_walcopy.cmd "広域回線異常時の手動転送先の一時ディレクトリ/%f" "%p"' |
archive_cleanup_command | ‘pg_archivecleanup "広域回線異常時の手動転送先の一時ディレクトリ" "%r"' |
postgresql.confファイルの編集
運用センタのプライマリサーバとスタンバイサーバにおいて、postgresql.confファイルのrestart_after_crashパラメータを削除するか、またはonを指定します。
インスタンスの起動
pg_ctlコマンドをstartモードで実行し、運用センタのプライマリサーバとスタンバイサーバのインスタンスを起動します。
注意
保守運用中は、運用センタが一時的に待機センタの役割を担うため、Mirroring Controllerは起動しないでください。
postgresql.confファイルの編集
待機センタのプライマリ候補サーバのpostgresql.confファイルに以下のパラメータを設定します。設定後、pg_ctlコマンドをreloadモードで実行し、設定変更を反映します。
パラメータ | 指定内容 |
---|---|
following_async_walsenders | 'on (運用センタのプライマリサーバ名, 運用センタのスタンバイサーバ名)' |
運用センタ保守後に行うセンタの切り戻しの手順は、“9.3.1.1 運用センタ保守時のセンタ切り替え”の手順と同じです。このため、センタ切り替えの手順の運用センタと待機センタを読み替えて参照してください。
ポイント
センタ切り戻しを速やかに行うために、保守運用中に待機センタに蓄積されたトランザクションログが運用センタへ適用されて収束していることを確認してから行います。運用センタのトランザクションログの収束状況は、待機センタのプライマリ候補サーバで実行したバックアップ制御関数pg_current_wal_lsnの結果と運用センタのプライマリサーバで実行したリカバリ情報関数pg_last_wal_receive_lsnの結果の差分から確認することができます。