DB2 5 min read

Db2 HADR「SQL1770N テイクオーバーできない」を理由コードで切り分ける

HADRのテイクオーバーを実行したら失敗する、あるいは応答が返ってこない。そのとき返るのがこれです。

SQL1770N  Takeover HADR cannot complete. Reason code = "1".

テイクオーバーの失敗は理由コードとHADRの状態を見れば機械的に切り分けられます。失敗する理由はほぼ「peer状態でない」か「撃つノードが違う」かのどちらかです。この記事では判断の順序を逆引きでまとめます。

まず見る(結論)

テイクオーバーには2種類あります。計画切替TAKEOVER HADR ON DATABASE <db>)はスタンバイ側で実行し、peer状態が前提です。緊急切替... BY FORCE)はpeerでなくても昇格できますが、データロストのリスクがあります。

撃つ前に、状態とログギャップを確認します。

SELECT HADR_STATE, HADR_CONNECT_STATUS, HADR_LOG_GAP,
       LOG_HADR_WAIT_TIME, HADR_SYNCMODE
  FROM TABLE(MON_GET_HADR(NULL)) AS T;
db2pd -db SAMPLE -hadr

HADR_STATE = PEER かつ HADR_CONNECT_STATUS = CONNECTED なら計画切替が可能な状態です。REMOTE_CATCHUP などのときに計画切替を撃つと理由コード1で弾かれます。

症状 → 原因 → 対処(逆引き)

理由コード / 症状 原因 まず打つ手
4 プライマリ側で通常テイクオーバーを実行した(既にプライマリ) スタンバイ側で実行し直す。害はないがロールも変わらない
1 スタンバイがpeer状態でない(プライマリ不達・カタチアップ中) HADR_STATE を確認。プライマリ生存なら追いつかせる、障害なら BY FORCE
応答がなかなか返らない ログギャップが大きくスタンバイが追いつけていない HADR_LOG_GAP / LOG_HADR_WAIT_TIME を確認。まずネットワーク帯域を疑う
BY FORCE 後、旧プライマリがスタンバイとして起動しない ログが分岐している 旧プライマリは捨て、新プライマリのバックアップから作り直す
切り替え後にアプリが SQL30108N で落ちる 再接続の通知をエラー扱いしている DB側の問題ではない。アプリの例外処理を見直す
BY FORCE を撃つ前に確認すること

BY FORCE は同期を待たずに昇格します。旧プライマリにあってスタンバイへ未転送のログは失われ、失われる量は HADR_LOG_GAP とsync modeに依存します(ASYNC / SUPERASYNC ほどリスクが大きい)。撃つ前にログギャップを確認し、プライマリが本当に落ちていることを確かめてください。プライマリ稼働中に撃つとスプリットブレインになります。

BY FORCE の後は、旧プライマリを新プライマリのスタンバイとして再統合します。ログが分岐していると START HADR ... AS STANDBY が拒否されるので、BY FORCE は「後で作り直す覚悟」とセットで考えます。

それでも切り分からないとき(実機ログつきの詳解)

2ノードHADR環境での失敗再現、BY FORCE 昇格後の状態、旧プライマリの再統合手順、計画切替の正常系まで含めた詳しい解説は、Zennのフル記事にまとめています。

▶ Zennで続きを読む(無料)

Db2 HADRの「テイクオーバーが失敗する・終わらない」を切り分ける ― SQL1770Nの理由コードとログギャップ


実機ログつきの詳解を読む →

関連: SQL30108N はエラーではない(ACRの扱い)Db2 強制TKO後のスプリットブレイン時の動作db2cm を使用した Pacemaker の構成

HADRは設定より「切り替え後に何が起きるか」が本番の勝負どころです。テイクオーバー後の再接続対応まで、本書 第5章「HADRの構築と切り替え運用」で扱っています。

現場で引ける Db2 の教科書

現場で引ける!Db2実践エンジニア・バイブル

Db2はRDBMS市場でシェア数%。情報が少なく、頼れるのは膨大な公式マニュアルだけ―― そんな現状を変えたくて、「なぜこの値にするのか」「この障害のとき次に何を見るのか」という、マニュアルに載っていない現場の文脈を1冊にまとめました。書いてあることはすべて実際の現場で経験したことです。

アーキテクチャ/構成パラメーター選定/セキュリティ/バックアップ・リカバリ/HADR/pureScale/日常点検の自動化/メモリ・ロック競合/SQLチューニング/RUNSTATS・REORG/MON_GET監視/現場の難題集 ―― 全12章+運用シェルスクリプト集

Zennで読む(¥2,000)→