IBM Support

[Db2] HADR スタンバイの復旧方法

Question & Answer


Question

HADR プライマリーのシステムで問題が発生し、スタンバイをプライマリーに昇格させました。
旧プライマリー (現スタンバイ) を HADR ペアとして復旧するにはどうすればよいですか。

Cause

HADR プライマリーの DB2 インスタンス、オペレーティング・システムまたはハードウェアで問題が発生した場合、TSA による自動化またはユーザー操作で TAKEOVER BY FORCE を実行し、スタンバイをプライマリーに昇格させてデータベースのサービスを継続できます。
ここで、オペレーティング・システムの再起動やハードウェアの修復などで旧プライマリー・システムの問題を解決後、再び旧プライマリーを HADR ペアに復旧するには、条件に応じて複数の選択肢があります。

Answer

a) 旧プライマリー・データベース自体に再統合の問題がなく、かつ問題発生から復旧までの期間が短い場合
Split Brain などの問題が発生していないため再統合が可能であり、かつ TAKEOVER 後に新プライマリーで大量の更新トランザクションが実行されていない場合、旧プライマリーをスタンバイとして起動できます。
  1. 旧プライマリーのホストにインスタンス・オーナーとしてログインします。
  2. (起動していない場合) 旧プライマリーのインスタンスを起動します。
    db2start
  3. 以下のコマンドを実行します。
    db2 start hadr on db <DB名> as standby
  4. db2pd で正しく再統合が完了したことを確認します。
    db2pd -db <DB名> -hadr
    HADR_STATE が LOCAL_CATCHUP-> REMOTE_CATCHUP_PENDING-> REMOTE_CATCHUP-> PEER になると再統合完了です。

この手順 (a) の詳細は以下のページを参照してください。
テークオーバー操作後のデータベースの再統合
 
注: Db2 HA (TSA による自動化クラスター) が構成されている場合、クラスター・リソースのロック、旧プライマリー・インスタンスの起動、旧プライマリー・データベースへの start hadr as standby の実行、クラスター・リソースのアンロックは Db2 HA によって自動実行されます。
b) 旧プライマリー・データベースが再統合不可の場合や、再統合可能でも復旧までに新プライマリーで大量の更新トランザクションが実行された場合
HADR ペアの通信途絶後に TAKEOVER BY FORCE が実行された場合などは再統合できない可能性があります。
また、再統合可能な場合でも、旧プライマリーの復旧までに新プライマリーで大量の更新が行われ、キャッチアップすべきログが大量にあるケースでは、こちらの手法でキャッチアップ時間を短縮してより早く回復できる場合があります。
  1. 新プライマリーのホストにインスタンス・オーナーとしてログインします。
    1-0. (オプション) HADR ロールを解除します。
    db2 stop hadr on db <DB名>
    1-1. データベースのバックアップを取得します。
    db2 backup db <DB名> online to <バックアップ先のパス名>
  2. 旧プライマリーのホストにインスタンス・オーナーとしてログインします。
    2-1. 新プライマリーで取得したバックアップ・イメージをローカル・ディスクにコピーします。
    2-2. (起動していない場合) 旧プライマリー・インスタンスを起動します。
    db2start
    2-3. (重要) 旧プライマリー・データベースをドロップしてから、データベースをリストアします。
    (既存データベースをドロップしない場合、再統合で問題が起きることがあります。)
    db2 drop db <DB名>
    db2 restore db <DB名> from <バックアップ・イメージのあるパス名>
    2-4. HADR パラメーターを設定します。
    db2 update db cfg for <DB名> using HADR_LOCAL_HOST <local_host>
    db2 update db cfg for <DB名> using HADR_LOCAL_SVC <local_port>
    db2 update db cfg for <DB名> using HADR_REMOTE_HOST <remote_host>
    db2 update db cfg for <DB名> using HADR_REMOTE_SVC <remote_port>
    db2 update db cfg for <DB名> using HADR_REMOTE_INST <remote_instance>
    2-5. HADR スタンバイとして起動します。
    db2 start hadr on db <DB名> as standby
    2-6. (新プライマリーがすでに起動している場合) db2pd で正しく再統合が完了したことを確認します。
    db2pd -db <DB名> -hadr
    HADR_STATE が LOCAL_CATCHUP-> REMOTE_CATCHUP_PENDING-> REMOTE_CATCHUP-> PEER になると再統合完了です。
注: 手順1で新プライマリーの HADR ロールを解除している場合、2-5 完了後に新プライマリーへ再度プライマリーの役割を与える必要があります。
  1. 新プライマリーのホストにインスタンス・オーナーとしてログインします。
  2. HADR ロールを付与します。
    db2 start hadr on db <DB名> as primary
各ステップの詳細な説明は、以下のページの手順 3 から 5 を参照してください。
運用上の考慮点
  • この文書は HADR ペアの復旧を目的にしています。
    TSAMP または Pacemaker による Db2 高可用性構成の復旧や、クライアント・リルートの構成は環境に合わせて別途行う必要があります。
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PklAAE","label":"HADR"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"All Versions"}]

Document Information

Modified date:
13 March 2024

UID

ibm10956395