データベース多重化運用では、業務を継続しながら構成されたサーバの保守作業を行うローリングアップデートを実施できます。
まず、スタンバイサーバに対して保守作業を実施したあと、スタンバイサーバをプライマリサーバに切り替えます。次に、スタンバイサーバに切り替わった旧プライマリサーバに対して保守作業を実施することで、業務を継続しながら保守作業を行うことができます。
なお、裁定サーバはデータベースサーバの業務に影響なく保守が可能なため、ローリングアップデートでの考慮は不要です。
参照
スタンバイサーバへの保守作業で停止時間が長くなる場合は、“3.9.1 スタンバイサーバの停止を伴う変更”の“スタンバイサーバの停止時間”を参照してください。
以下は、ローリングアップデートのイメージです。
図3.1 ローリングアップデート
上図に対応して、以下の手順で行います。
スタンバイサーバの保守作業
スタンバイサーバにおいてサーバの保守作業を行うために、Mirroring Controllerを停止します。
例)
> mc_ctl stop -M D:\mcdir\inst1
停止が完了したことを確認します。
スタンバイサーバにおいてデータベースサーバのOSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定にしていた場合は、自動的に起動・停止する設定を解除します。
参照
OSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定の詳細は“2.12 多重化したインスタンスとMirroring Controllerの自動起動・停止の設定”を参照してください。
“Administrator”権限のあるインスタンス管理者ユーザーで行ってください。
sc configコマンドを使用して、Windowsサービスから多重化したインスタンスおよびMirroring Controllerを自動起動しないように設定してください。
例) 登録サービス名が“Mirroring_Controller_inst1”の場合の実行例を以下に示します。
> sc config "Mirroring_Controller_inst1" start= demand
参考
sc qcコマンドを使用して、登録状態を確認することができます。
登録内容の詳細は、scコマンドのヘルプなどのドキュメントを参照してください。
保守作業を実施します。
スタンバイサーバにプライマリサーバのインスタンスの複製を作成します。
pg_basebackupコマンドを実行して、スタンバイサーバのデータをプライマリサーバと同期して作成します。
例)
> pg_basebackup -D D:\database\inst1 -X fetch --waldir=E:\transaction\inst1 --progress --verbose -R --dbname="application_name=スタンバイサーバ名" -h プライマリサーバのホスト名 -p プライマリサーバのポート番号
参照
スタンバイサーバにプライマリサーバのインスタンスを複製する手順は、スタンバイサーバをセットアップする手順と同じです。
“2.5.2 スタンバイサーバのインスタンスの作成・設定・登録”を参照して、リカバリを実施してください。
多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定を確認します。
手順2において、OSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定を解除した場合は、再設定します。自動的に起動・停止する必要が無い場合は、この手順は省略できます。
“Administrator”権限のあるインスタンス管理者ユーザーで行ってください。
sc configコマンドを使用して、Windowsサービスから多重化したインスタンスおよびMirroring Controllerを自動起動するように設定してください。
例) 登録サービス名が“Mirroring_Controller_inst1”の場合の実行例を以下に示します。
> sc config "Mirroring_Controller_inst1" start= auto
参考
sc qcコマンドを使用して、登録状態を確認することができます。
登録内容の詳細は、scコマンドのヘルプなどのドキュメントを参照してください。
スタンバイサーバのMirroring Controllerを起動(組込み)します。
本操作はスタンバイサーバでの保守作業を確定するうえで必要であるため、必ず実施してください。
インスタンス管理者ユーザーで、mc_ctlコマンドをstartモードで実行します。
例)
> mc_ctl start -M D:\mcdir\inst1
インスタンス管理者ユーザーで、mc_ctlコマンドをstartモードで-Fオプションを指定して実行します。
例)
> mc_ctl start -M D:\mcdir\inst1 -F
ポイント
自動切り替え/切り離しはMirroring Controllerが起動したあとに、mc_ctlコマンドのenable-failoverモード、または、disable-failoverモードを使用することにより自動切り替え/切り離しを有効、または無効にすることが可能です。
プライマリサーバに切り替え
プライマリサーバの保守を行うために、プライマリサーバとスタンバイサーバのどちらかでmc_ctlコマンドをswitchモードで実行します。
例)
> mc_ctl switch -M D:\mcdir\inst1
切り替えが完了した時点で、新プライマリサーバのpostgresql.confファイルのsynchronous_standby_namesパラメータが以下のようにコメントアウトされます。
例)
#synchronous_standby_names = 'primary'
新スタンバイサーバの保守作業
Mirroring Controllerを停止します。
新スタンバイサーバ(切り替わる前のプライマリサーバ)において、mc_ctlコマンドをstopモードで実行します。
例)
> mc_ctl stop -M D:\mcdir\inst1
停止が完了したことを確認します。
新スタンバイサーバにおいてデータベースサーバのOSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定にしていた場合は、ここで自動的に起動・停止する設定を解除します。
参照
OSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定の詳細については“2.12 多重化したインスタンスとMirroring Controllerの自動起動・停止の設定”を参照してください。
“Administrator”権限のあるインスタンス管理者ユーザーで行ってください。
sc configコマンドを使用して、Windowsサービスから多重化したインスタンスおよびMirroring Controllerを自動起動しないように設定してください。
例) 登録サービス名が“Mirroring_Controller_inst1”の場合の実行例を以下に示します。
> sc config "Mirroring_Controller_inst1" start= demand
参考
sc qcコマンドを使用して、登録状態を確認することができます。
登録内容の詳細は、scコマンドのヘルプなどのドキュメントを参照してください。
停止中の新スタンバイサーバにおいて、保守作業を実施します。
新スタンバイサーバに新プライマリサーバのインスタンスの複製を作成します。
pg_basebackupコマンドを実行して、新スタンバイサーバのデータを新プライマリサーバと同期して作成します。
例)
> pg_basebackup -D D:\database\inst1 -X fetch --waldir=E:\transaction\inst1 --progress --verbose -R --dbname="application_name=スタンバイサーバ名" -h プライマリサーバのホスト名 -p プライマリサーバのポート番号
参照
新スタンバイサーバに新プライマリサーバのインスタンスを複製する手順は、新スタンバイサーバをセットアップする手順と同じです。
“2.5.2 スタンバイサーバのインスタンスの作成・設定・登録”を参照して、リカバリを実施してください。
多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定を確認します。
手順2において、OSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定を解除した場合は、ここで再設定します。自動的に起動・停止する必要が無い場合は、この手順は省略することができます。
“Administrator”権限のあるインスタンス管理者ユーザーで行ってください。
sc configコマンドを使用して、Windowsサービスから多重化したインスタンスおよびMirroring Controllerを自動起動するように設定してください。
例) 登録サービス名が“Mirroring_Controller_inst1”の場合の実行例を以下に示します。
> sc config "Mirroring_Controller_inst1" start= auto
参考
sc qcコマンドを使用して、登録状態を確認することができます。
登録内容の詳細は、scコマンドのヘルプなどのドキュメントを参照してください。
保守作業が完了したあと、スタンバイサーバのpostgresql.confファイルを必要に応じて編集します。
インスタンスの複製により、synchronous_standby_namesパラメータがプライマリサーバでの指定内容になるため、スタンバイサーバでの指定内容へ修正します。コメントアウトされている場合は、アンコメントしてください。
スタンバイサーバで、Mirroring Controllerを起動(組込み)します。
インスタンス管理者ユーザーで、mc_ctlコマンドをstartモードで実行します。
例)
> mc_ctl start -M D:\mcdir\inst1
インスタンス管理者ユーザーで、mc_ctlコマンドをstartモードで-Fオプションを指定して実行します。
例)
> mc_ctl start -M D:\mcdir\inst1 -F
ポイント
自動切り替え/切り離しはMirroring Controllerが起動したあとに、mc_ctlコマンドのenable-failoverモード、または、disable-failoverモードを使用することにより自動切り替え/切り離しを有効、または無効にすることが可能です。
プライマリサーバの切り戻し
プライマリサーバとスタンバイサーバをもとのサーバ構成に戻して、以前のプライマリサーバで主たる業務を行いたい場合に実施してください。手順の詳細は、“4.1.1.3 プライマリサーバの切り戻し”を参照してください。
注意
保守作業が完了したあと、すみやかにバックアップを取得してください。