データベース多重化運用では、業務を継続しながら構成されたサーバの保守作業を行うローリングアップデートを実施できます。
まず、スタンバイサーバに対して保守作業を実施したあと、スタンバイサーバをプライマリサーバに切り替えます。次に、スタンバイサーバに切り替わった旧プライマリサーバに対して保守作業を実施することで、業務を継続しながら保守作業を行うことができます。
参照
スタンバイサーバへの保守作業で停止時間が長くなる場合は、“4.7.1 スタンバイサーバの停止を伴う変更”の“スタンバイサーバの停止時間”を参照してください。
以下は、ローリングアップデートのイメージです。
図4.1 ローリングアップデート
上図に対応して、以下の手順で行います。
スタンバイサーバの保守作業
スタンバイサーバにおいてサーバの保守作業を行うために、Mirroring Controllerを停止します。
例)
$ mc_ctl stop -M /mcdir/inst1
停止が完了したことを確認します。
スタンバイサーバにおいてデータベースサーバのOSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定にしていた場合は、自動的に起動・停止する設定を解除します。
参照
OSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定の詳細は“3.9 多重化したインスタンスとMirroring Controllerの自動起動・停止の設定”を参照してください。
OSのスーパーユーザーで、chkconfigコマンドを使用して自動起動・停止の無効化を行います。
例) 自動起動・停止のシェルスクリプトを“rc_mc_inst1”として作成して、ラン・レベル3と5に対して無効化した場合の例を以下に示します。
# chkconfig --level 35 rc_mc_inst1 off
OSのスーパーユーザーで、systemctlコマンドを使用して自動起動・停止の無効化を行います。
例) 自動起動・停止するユニットを“mcoi_inst1.service”とした場合の例を以下に示します。
# systemctl disable mcoi_inst1.service
保守作業を実施します。
スタンバイサーバにプライマリサーバのインスタンスの複製を作成します。
pg_basebackupコマンドを実行して、スタンバイサーバのデータをプライマリサーバと同期して作成します。
例)
$ pg_basebackup -D /database/inst1 --xlog --progress --verbose -R --dbname='application_name=スタンバイサーバ名' -h プライマリサーバのホスト名 -p プライマリサーバのポート番号
参照
スタンバイサーバにプライマリサーバのインスタンスを複製する手順は、スタンバイサーバをセットアップする手順と同じです。
“3.4.2 スタンバイサーバのインスタンスの作成・設定・登録”を参照して、リカバリを実施してください。
多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定を確認します。
手順2において、OSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定を解除した場合は、再設定します。自動的に起動・停止する必要が無い場合は、この手順は省略できます。
OSのスーパーユーザーで、chkconfigコマンドを使用してシェルスクリプトの有効化を行います。
例) 自動起動・停止のシェルスクリプトを“rc_mc_inst1”として作成して、ラン・レベル3と5に対して有効化した場合の例を以下に示します。
# chkconfig --level 35 rc_mc_inst1 on
OSのスーパーユーザーで、systemctlコマンドを使用して自動起動・停止の有効化を行います。
例) 自動起動・停止するユニットを“mcoi_inst1.service”とした場合の例を以下に示します。
# systemctl enable mcoi_inst1.service
スタンバイサーバの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を自動的に起動・停止する設定の詳細については“3.9 多重化したインスタンスとMirroring Controllerの自動起動・停止の設定”を参照してください。
OSのスーパーユーザーで、chkconfigコマンドを使用して自動起動・停止の無効化を行います。
例) 自動起動・停止のシェルスクリプトを“rc_mc_inst1”として作成して、ラン・レベル3と5に対して無効化した場合の例を以下に示します。
# chkconfig --level 35 rc_mc_inst1 off
OSのスーパーユーザーで、systemctlコマンドを使用して自動起動・停止の無効化を行います。
例) 自動起動・停止するユニットを“mcoi_inst1.service”とした場合の例を以下に示します。
# systemctl disable mcoi_inst1.service
停止中の新スタンバイサーバにおいて、保守作業を実施します。
新スタンバイサーバに新プライマリサーバのインスタンスの複製を作成します。
pg_basebackupコマンドを実行して、新スタンバイサーバのデータを新プライマリサーバと同期して作成します。
例)
$ pg_basebackup -D /database/inst1 --xlog --progress --verbose -R --dbname='application_name=スタンバイサーバ名' -h プライマリサーバのホスト名 -p プライマリサーバのポート番号
参照
新スタンバイサーバに新プライマリサーバのインスタンスを複製する手順は、新スタンバイサーバをセットアップする手順と同じです。
“3.4.2 スタンバイサーバのインスタンスの作成・設定・登録”を参照して、リカバリを実施してください。
多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定を確認します。
手順2において、OSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定を解除した場合は、ここで再設定します。自動的に起動・停止する必要が無い場合は、この手順は省略することができます。
OSのスーパーユーザーで、chkconfigコマンドを使用してシェルスクリプトの有効化を行います。
例) 自動起動・停止のシェルスクリプトを“rc_mc_inst1”として作成し、ラン・レベル3と5に対して有効化した場合の例を以下に示します。
# chkconfig --level 35 rc_mc_inst1 on
OSのスーパーユーザーで、systemctlコマンドを使用して自動起動・停止の有効化を行います。
例) 自動起動・停止するユニットを“mcoi_inst1.service”とした場合の例を以下に示します。
# systemctl enable mcoi_inst1.service
保守作業が完了したあと、スタンバイサーバの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
プライマリサーバの切り戻し
プライマリサーバとスタンバイサーバをもとのサーバ構成に戻して、以前のプライマリサーバで主たる業務を行いたい場合に実施してください。手順の詳細は、“5.1.1.3 プライマリサーバの切り戻し”を参照してください。
注意
保守作業が完了したあと、すみやかにバックアップを取得してください。