Db2 HADR on GCP – Part 9 Db2 HADR構成

1,539 views

HADR の設定を行なっていきます、基本的にスタンバイを構成してからプライマリーを構成します。また、一度 HADR の構成を行うと、起動する順序はスタンバイ、プライマリーという順番になります。プライマリー起動時にスタンバイが起動してない場合はエラーになります。

Db2 HADR 構成

スタンバイ側構成

スタンバイで以下を実行していきます、内部IPの部分はホスト名でも問題ありません。
db2_hadr の部分は Part 5 で /etc/services に設定した HADR ポートのサービス名になります。

$ db2 "UPDATE DB CFG FOR HADRDB USING
     HADR_LOCAL_HOST    <スタンバイ内部IP>
     HADR_LOCAL_SVC     db2_hadr
     HADR_SYNCMODE      NEARSYNC
     HADR_TARGET_LIST   <プライマリー内部IP>:db2_hadr
     HADR_REMOTE_HOST  <プライマリー内部IP>
     HADR_REMOTE_SVC    db2_hadr
     HADR_REMOTE_INST   db2inst1
     LOGINDEXBUILD   ON
     "

HADR のスタンバイとして起動します。

$ db2 "START HADR ON DB HADRDB AS STANDBY"

プライマリー側構成

ここまででスタンバイがプライマリーからのログを受け付ける状態になりました。
続けてプライマリー機の設定を行なっていきますが、スタンバイ構成時の内部IPが逆向きになるだけです。

$ db2 "UPDATE DB CFG FOR HADRDB USING
     HADR_LOCAL_HOST    <プライマリー内部IP>
     HADR_LOCAL_SVC     db2_hadr
     HADR_SYNCMODE      NEARSYNC
     HADR_TARGET_LIST   <スタンバイ内部IP>:db2_hadr
     HADR_REMOTE_HOST   <スタンバイ内部IP>
     HADR_REMOTE_SVC    db2_hadr
     HADR_REMOTE_INST   db2inst1
     LOGINDEXBUILD ON
     "

プライマリー機として起動します。

$ db2 "START HADR ON DB HADRDB AS PRIMARY"

HADR 状態確認

プライマリーで状態確認を行います。
ズラーっと色んな情報が表示されますが、HADR_ROLE、HADR_STATE、HADR_CONNECT_STATUS が以下の状態であれば問題ありません。

$ db2pd -db HADRDB -hadr

                            HADR_ROLE = PRIMARY
                                            :
                           HADR_STATE = PEER
                       :
                  HADR_CONNECT_STATUS = CONNECTED

同じようにスタンバイでも確認してみます。

$ db2pd -db HADRDB -hadr

                            HADR_ROLE = STANDBY
                                            :
                           HADR_STATE = PEER
                                            :
                  HADR_CONNECT_STATUS = CONNECTED

以下のコマンドだと日本語で表示されます。
db2 “GET SNAPSHOT FOR DATABASE ON HADRDB”

HADR 状況
  役割                   = 1 次
  状態                           = ピア
  同期モード             = 近似同期
  接続状況               = 接続済み, 2020-11-18 23:05:55.330626
  欠落ハートビート       = 0
  ローカル・ホスト       = 10.146.0.4
  ローカル・サービス     = db2_hadr
  リモート・ホスト       = 10.146.0.8
  リモート・サービス     = db2_hadr
  リモート・インスタンス = db2inst1
  タイムアウト (秒数)    = 120
  1 次ログ位置 (ファイル、ページ、LSN) = S0000000.LOG, 71, 0000000002B09969
  スタンバイ・ログ位置 (ファイル、ページ、LSN) = S0000000.LOG, 71, 0000000002B09969
  ギャップ稼働平均のログ (バイト数) = 0

TAKEOVER

ここまで HADR 構成の基本的な設定は終わりですので問題なくTKO できるか確認します。
スタンバイ機から以下のコマンドを実行します。

db2 "CONNECT TO HADRDB"
SQL1776N  このコマンドを HADR
データベース上で発行することはできません。理由コード
= "1"。

スタンバイDBなので接続できないというエラーが出力されます。
TAKEOVER を実行しロールを入れ替えます、スタンバイだったロールがプライマリーになるため接続可能になるはずです。TAKEOVER 前のロールを確認します。

$ db2 "GET DB CFG FOR HADRDB" | grep "HADR"
       データベースのデータベース構成   HADRDB
 HADR データベースの役割                                 = STANDBY
:
:

スタンバイ側でTAKEOVER コマンドを実行します。

 $ db2 "TAKEOVER HADR ON DATABASE HADRDB"

スタンバイでDB へ接続してみます。

$ db2 "CONNECT TO HADRD"

スタンバイでTAKEOVER 後のロールを確認します。

$ db2 "GET DB CFG FOR HADRDB" | grep "HADR"
       データベースのデータベース構成   HADRDB
 HADR データベースの役割                                 = PRIMARY

プライマリーでも確認してみます。

$ db2 "GET DB CFG FOR HADRDB" | grep "HADR"
       データベースのデータベース構成   HADRDB
 HADR データベースの役割                                 = STANDBY

問題なくTAKEOVERが実行されロールが入れ替わったことが確認できました!
旧プライマリー側で同様のコマンドを実行し元に戻しておきます。

$ db2 "TAKEOVER HADR ON DATABASE HADRDB"

“TERMINATE” で切断、”FORCE APPLICATION ALL” でアプリケーション切断後に、プライマリー スタンバイ の順番で ”DEACTIVATE DB <データベース名> でデータベースの非活動化を実施し、”db2stop force” で Db2 を停止しておきます。

$ db2 "TERMINATE"
$ db2 "FORCE APPLICATON ALL"
$ db2 "DEACTIVATE DB HADRDB"
$ db2stop force

軽い気持ちで始めたら Part 9 まで来てしまいましたが、Db2 の HADR の基本的な構成という意味ではここで完了です。ここまで読んでくださった方、ありがとうございました。
次回はこの HADR 環境を使用してクライアントリルートの動作確認をおこってみたいと思います。
それでは、ありがとうございまいした!

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA