データベース多重化運用では、業務を継続しながら構成されたサーバの保守作業を行うローリングアップデートを実施できます。
まず、スタンバイサーバに対して保守作業を実施したあと、スタンバイサーバをプライマリサーバに切り替えます。次に、スタンバイサーバに切り替わった旧プライマリサーバに対して保守作業を実施することで、業務を継続しながら保守作業を行うことができます。
参照
スタンバイサーバへの保守作業で停止時間が長くなる場合は、“7.7.1 スタンバイサーバの停止を伴う変更”の“スタンバイサーバの停止時間”を参照してください。
以下は、ローリングアップデートのイメージです。
図7.1 ローリングアップデート
上図に対応して、以下の手順で行います。
スタンバイサーバの保守作業
スタンバイサーバにおいてサーバの保守作業を行うために、Mirroring Controllerを停止します。
例)
$ mc_ctl stop -M /mcdir/inst1
停止が完了したことを確認します。
スタンバイサーバにおいてデータベースサーバのOSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定にしていた場合は、自動的に起動・停止する設定を解除します。
参照
OSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定の詳細は“6.10 多重化したインスタンスとMirroring Controllerの自動起動・停止の設定”を参照してください。
OSのスーパーユーザーで、自動的に起動・停止する設定を行ったときに作成したシンボリックリンクを削除します。
例) 自動起動・停止のシェルスクリプトを“rc_mcoi_inst1”として作成して、シンボリックリンクを削除した場合の例を以下に示します。
# rm /etc/rc2.d/S85rc_mcoi_inst1 # rm /etc/rc0.d/K15rc_mcoi_inst1 # rm /etc/rc1.d/K15rc_mcoi_inst1 # rm /etc/rcS.d/K15rc_mcoi_inst1
なお、多重化したインスタンスを自動的に起動・停止する運用をやめる場合は、自動起動・停止のシェルスクリプトを以下のディレクトリから削除してください。
ディレクトリ
/etc/init.d
保守作業を実施します。
スタンバイサーバにプライマリサーバのインスタンスの複製を作成します。
mc_ctlコマンドをsetupモードで実行して、スタンバイサーバのデータをプライマリサーバと同期して作成します。
例)
$ mc_ctl setup -M /mcdir/inst1 -r standby -U ユーザー名 -h プライマリサーバのホスト名 -p プライマリサーバのポート番号 --standby-name=スタンバイサーバ名
参照
スタンバイサーバにプライマリサーバのインスタンスを複製する手順は、スタンバイサーバをセットアップする手順と同じです。
“6.4.2 スタンバイサーバのインスタンスの作成・設定・登録”を参照して、リカバリを実施してください。
多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定を確認します。
手順2において、OSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定を解除した場合は、再設定します。自動的に起動・停止する必要が無い場合は、この手順は省略できます。
詳細は、“6.10 多重化したインスタンスとMirroring Controllerの自動起動・停止の設定”を参照して設定してください。
スタンバイサーバのMirroring Controllerを起動(組込み)します。
本操作はスタンバイサーバでの保守作業を確定するうえで必要であるため、必ず実施してください。
インスタンス管理者ユーザーで、mc_ctlコマンドをstartモードで-fオプションを指定して実行します。これにより、自動切り替え/切り離しの有効化を行います。
なお、-fオプションを指定せずに起動した場合、自動切り替え/切り離しは有効になりません。有効にするには、Mirroring Controllerを起動したあとにmc_ctlコマンドをenable-failoverモードで実行するか、-fオプションを指定してMirroring Controllerを再起動してください。
例)
$ mc_ctl start -M /mcdir/inst1 -w -f
インスタンス管理者ユーザーで、mc_ctlコマンドをstartモードで実行します。
例)
$ mc_ctl start -M /mcdir/inst1 -w
プライマリサーバに切り替え
プライマリサーバの保守を行うために、プライマリサーバとスタンバイサーバのどちらかでmc_ctlコマンドをswitchモードで実行します。
例)
$ mc_ctl switch -M /mcdir/inst1
切り替えが完了した時点で、新プライマリサーバのpostgresql.confファイルのsynchronous_standby_namesパラメータが以下のようにコメントアウトされます。
例)
#synchronous_standby_names = 'primary'
新スタンバイサーバの保守作業
Mirroring Controllerを停止します。
新スタンバイサーバ(切り替わる前のプライマリサーバ)において、mc_ctlコマンドをstopモードで実行します。
例)
$ mc_ctl stop -M /mcdir/inst1
停止が完了したことを確認します。
新スタンバイサーバにおいてデータベースサーバのOSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定にしていた場合は、ここで自動的に起動・停止する設定を解除します。
参照
OSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定の詳細については“6.10 多重化したインスタンスとMirroring Controllerの自動起動・停止の設定”を参照してください。
OSのスーパーユーザーで、自動的に起動・停止する設定を行ったときに作成したシンボリックリンクを削除します。
例) 自動起動・停止のシェルスクリプトを“rc_mc_inst1”として作成して、シンボリックリンクを削除した場合の例を以下に示します。
# rm /etc/rc2.d/S85rc_mcoi_inst1 # rm /etc/rc0.d/K15rc_mcoi_inst1 # rm /etc/rc1.d/K15rc_mcoi_inst1 # rm /etc/rcS.d/K15rc_mcoi_inst1
なお、多重化したインスタンスを自動的に起動・停止する運用をやめる場合は、自動起動・停止のシェルスクリプトを以下のディレクトリから削除してください。
ディレクトリ
/etc/init.d
停止中の新スタンバイサーバにおいて、保守作業を実施します。
新スタンバイサーバに新プライマリサーバのインスタンスの複製を作成します。
mc_ctlコマンドをsetupモードで実行して、新スタンバイサーバのデータを新プライマリサーバと同期して作成します。
例)
$ mc_ctl setup -M /mcdir/inst1 -r standby -U ユーザー名 -h 新プライマリサーバのホスト名 -p 新プライマリサーバのポート番号 --standby-name=新スタンバイサーバ名
参照
新スタンバイサーバに新プライマリサーバのインスタンスを複製する手順は、新スタンバイサーバをセットアップする手順と同じです。
“6.4.2 スタンバイサーバのインスタンスの作成・設定・登録”を参照して、リカバリを実施してください。
多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定を確認します。
手順2において、OSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定を解除した場合は、ここで再設定します。自動的に起動・停止する必要が無い場合は、この手順は省略することができます。
詳細は、“6.10 多重化したインスタンスとMirroring Controllerの自動起動・停止の設定”を参照して設定してください。
保守作業が完了したあと、スタンバイサーバのpostgresql.confファイルを必要に応じて編集します。
インスタンスの複製により、synchronous_standby_namesパラメータがプライマリサーバでの指定内容になるため、スタンバイサーバでの指定内容へ修正します。コメントアウトされている場合は、アンコメントしてください。
スタンバイサーバで、Mirroring Controllerを起動(組込み)します。
インスタンス管理者ユーザーで、mc_ctlコマンドをstartモードで-wオプションと-fオプションを指定して実行します。これにより、自動切り替え/切り離しの有効化を行います。
なお、-fオプションを指定せずに起動した場合、自動切り替え/切り離しは有効になりません。有効にするには、Mirroring Controllerを起動したあとにmc_ctlコマンドをenable-failoverモードで実行するか、-fオプションを指定してMirroring Controllerを再起動してください。
例)
$ mc_ctl start -M /mcdir/inst1 -w -f
インスタンス管理者ユーザーで、mc_ctlコマンドをstartモードで-wオプションを指定して実行します。
例)
$ mc_ctl start -M /mcdir/inst1 -w
プライマリサーバの切り戻し
プライマリサーバとスタンバイサーバをもとのサーバ構成に戻して、以前のプライマリサーバで主たる業務を行いたい場合に実施してください。手順の詳細は、“8.1.1.3 プライマリサーバの切り戻し”を参照してください。
注意
保守作業が完了したあと、すみやかにバックアップを取得してください。