ページの先頭行へ戻る
Enterprise Postgres 15 クラスタ運用ガイド(データベース多重化編)

3.8.1 ローリングアップデート

データベース多重化運用では、業務を継続しながら構成されたサーバの保守作業を行うローリングアップデートを実施できます。

まず、スタンバイサーバに対して保守作業を実施したあと、スタンバイサーバをプライマリサーバに切り替えます。次に、スタンバイサーバに切り替わった旧プライマリサーバに対して保守作業を実施することで、業務を継続しながら保守作業を行うことができます。

なお、裁定サーバはデータベースサーバの業務に影響なく保守が可能なため、ローリングアップデートでの考慮は不要です。

参照

スタンバイサーバへの保守作業で停止時間が長くなる場合は、“3.9.1 スタンバイサーバの停止を伴う変更”の“スタンバイサーバの停止時間”を参照してください。

以下は、ローリングアップデートのイメージです。

図3.1 ローリングアップデート

上図に対応して、以下の手順で行います。

スタンバイサーバの保守作業

  1. スタンバイサーバにおいてサーバの保守作業を行うために、Mirroring Controllerを停止します。

    例)
    $ mc_ctl stop -M /mcdir/inst1
  2. 停止が完了したことを確認します。

    スタンバイサーバにおいてデータベースサーバのOSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定にしていた場合は、自動的に起動・停止する設定を解除します。

    参照

    OSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定の詳細は“2.12 多重化したインスタンスとMirroring Controllerの自動起動・停止の設定”を参照してください。

    OSのスーパーユーザーで、systemctlコマンドを使用して自動起動・停止の無効化を行います。

    例)
    自動起動・停止するユニットを“mcoi_inst1.service”とした場合の例を以下に示します。
    # systemctl disable mcoi_inst1.service
  3. 保守作業を実施します。

  4. スタンバイサーバにプライマリサーバのインスタンスの複製を作成します。

    pg_basebackupコマンドを実行して、スタンバイサーバのデータをプライマリサーバと同期して作成します。

    例)
    $ pg_basebackup -D /database/inst1 -X fetch --waldir=/transaction/inst1 --progress --verbose -R --dbname='application_name=スタンバイサーバ名' -h プライマリサーバのホスト名 -p プライマリサーバのポート番号

    参照

    スタンバイサーバにプライマリサーバのインスタンスを複製する手順は、スタンバイサーバをセットアップする手順と同じです。

    2.5.2 スタンバイサーバのインスタンスの作成・設定・登録”を参照して、リカバリを実施してください。

  5. 多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定を確認します。

    手順2において、OSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定を解除した場合は、再設定します。自動的に起動・停止する必要が無い場合は、この手順は省略できます。

    OSのスーパーユーザーで、systemctlコマンドを使用して自動起動・停止の有効化を行います。

    例)
    自動起動・停止するユニットを“mcoi_inst1.service”とした場合の例を以下に示します。
    # systemctl enable mcoi_inst1.service
  6. スタンバイサーバのMirroring Controllerを起動(組込み)します。

    本操作はスタンバイサーバでの保守作業を確定するうえで必要であるため、必ず実施してください。

    自動切り替え/切り離しを有効化する場合

    インスタンス管理者ユーザーで、mc_ctlコマンドをstartモードで実行します。

    例)
    $ mc_ctl start -M /mcdir/inst1
    自動切り替え/切り離しを有効化しない場合

    インスタンス管理者ユーザーで、mc_ctlコマンドをstartモードで-Fオプションを指定して実行します。

    例)
    $ mc_ctl start -M /mcdir/inst1 -F

    ポイント

    自動切り替え/切り離しはMirroring Controllerが起動したあとに、mc_ctlコマンドのenable-failoverモード、または、disable-failoverモードを使用することにより自動切り替え/切り離しを有効、または無効にすることが可能です。

プライマリサーバ切り替え

プライマリサーバの保守を行うために、プライマリサーバとスタンバイサーバのどちらかでmc_ctlコマンドをswitchモードで実行します。

例)
$ mc_ctl switch -M /mcdir/inst1

切り替えが完了した時点で、新プライマリサーバのpostgresql.confファイルのsynchronous_standby_namesパラメータが以下のようにコメントアウトされます。

例)
#synchronous_standby_names = 'primary'

スタンバイサーバの保守作業

  1. Mirroring Controllerを停止します。

    新スタンバイサーバ(切り替わる前のプライマリサーバ)において、mc_ctlコマンドをstopモードで実行します。

    systemdを使用してMirroring Controllerの自動起動・停止の設定を実施している場合は、mc_ctlコマンドではなく、systemctlコマンドを使用してください。詳細は、“2.12 多重化したインスタンスとMirroring Controllerの自動起動・停止の設定”を参照してください。

    例)
    $ mc_ctl stop -M /mcdir/inst1
  2. 停止が完了したことを確認します。

    新スタンバイサーバにおいてデータベースサーバのOSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定にしていた場合は、ここで自動的に起動・停止する設定を解除します。

    参照

    OSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定の詳細については“2.12 多重化したインスタンスとMirroring Controllerの自動起動・停止の設定”を参照してください。

    OSのスーパーユーザーで、systemctlコマンドを使用して自動起動・停止の無効化を行います。

    例)
    自動起動・停止するユニットを“mcoi_inst1.service”とした場合の例を以下に示します。
    # systemctl disable mcoi_inst1.service
  3. 停止中の新スタンバイサーバにおいて、保守作業を実施します。

  4. 新スタンバイサーバに新プライマリサーバのインスタンスの複製を作成します。

    pg_basebackupコマンドを実行して、新スタンバイサーバのデータを新プライマリサーバと同期して作成します。

    例)
    $ pg_basebackup -D /database/inst1 -X fetch --waldir=/transaction/inst1 --progress --verbose -R --dbname='application_name=スタンバイサーバ名' -h プライマリサーバのホスト名 -p プライマリサーバのポート番号

    参照

    新スタンバイサーバに新プライマリサーバのインスタンスを複製する手順は、新スタンバイサーバをセットアップする手順と同じです。
    2.5.2 スタンバイサーバのインスタンスの作成・設定・登録”を参照して、リカバリを実施してください。

  5. 多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定を確認します。

    手順2において、OSの起動・停止に合わせて、多重化したインスタンスおよびMirroring Controllerを自動的に起動・停止する設定を解除した場合は、ここで再設定します。自動的に起動・停止する必要が無い場合は、この手順は省略することができます。

    OSのスーパーユーザーで、systemctlコマンドを使用して自動起動・停止の有効化を行います。

    例)
    自動起動・停止するユニットを“mcoi_inst1.service”とした場合の例を以下に示します。
    # systemctl enable mcoi_inst1.service
  6. 保守作業が完了したあと、スタンバイサーバのpostgresql.confファイルを必要に応じて編集します。

    インスタンスの複製により、synchronous_standby_namesパラメータがプライマリサーバでの指定内容になるため、スタンバイサーバでの指定内容へ修正します。コメントアウトされている場合は、アンコメントしてください。

  7. スタンバイサーバで、Mirroring Controllerを起動(組込み)します。

    自動切り替え/切り離しを有効化する場合

    インスタンス管理者ユーザーで、mc_ctlコマンドをstartモードで実行します。

    例)
    $ mc_ctl start -M /mcdir/inst1
    自動切り替え/切り離しを有効化しない場合

    インスタンス管理者ユーザーで、mc_ctlコマンドをstartモードで-Fオプションを指定して実行します。

    例)
    $ mc_ctl start -M /mcdir/inst1 -F

    ポイント

    自動切り替え/切り離しはMirroring Controllerが起動したあとに、mc_ctlコマンドのenable-failoverモード、または、disable-failoverモードを使用することにより自動切り替え/切り離しを有効、または無効にすることが可能です。

プライマリサーバの切り戻し

プライマリサーバとスタンバイサーバをもとのサーバ構成に戻して、以前のプライマリサーバで主たる業務を行いたい場合に実施してください。手順の詳細は、“4.1.1.3 プライマリサーバの切り戻し”を参照してください。

注意

保守作業が完了したあと、すみやかにバックアップを取得してください。