このポストは 2019年1月に公開された Replica Failover within the Secondary Availability Group in a Distributed Availability Group の翻訳です。
---------------
分散型可用性グループ (distributed AG) は、特別な可用性グループであり、2つの可用性グループにまたがっています。このブログでは、分散型可用性グループのフェールオーバーについての問題を説明します。特に可用性グループ間の同期状態にかかわらず、分散型可用性グループのデータ損失への耐性をご紹介します。
検証のために、シンプルな分散型可用性グループ 'TIWENDAG' を作成します。 'TIWENDAG' の構成は次の図のとおりです。 'TIWENAG1' が分散型可用性グループ 'TIWENDAG' のプライマリ可用性グループで、'TIWENVM1' がプライマリ レプリカ、'TIWENVM2' がセカンダリレプリカです。'TIWENAG2' が分散型可用性グループ 'TIWENDAG' のセカンダリ可用性グループで、'TIWENVM3' がプライマリ レプリカ、'TIWENVM4' がセカンダリレプリカです。
分散型可用性グループで定義されている、2つの可用性グループの自動フェールオーバーはサポートされています。例えば、可用性グループ TIWENAG1 でフェールオーバーモードが "自動" で設定されていると、TIWENAG1 がダウンした際にはTIWENAG1 (プライマリ) と TIWENAG2 (同期セカンダリ) 間で自動フェールオーバーが発生します。同様に、可用性グループ TIWENAG2 でTIWENVM3 (プライマリ) がダウンした場合には、TIWENVM4 (同期セカンダリ) に自動的にフェールオーバーされます。
可用性グループのプライマリ レプリカがダウンした際、プライマリ レプリカ (可用性グループが分散型可用性グループの一部かどうかにかかわらず) は同期セカンダリ レプリカに自動的にフェールオーバーされます。
もしセカンダリ可用性グループ (フォワーダーとも呼ばれます) のプライマリ レプリカが失われて自動フェールオーバーが発生した場合や、分散型可用性グループのセカンダリ可用性グループで手動フェールオーバーが行われた場合、次の条件を満たしていれば、データ損失は発生しません。
- プライマリ可用性グループ のプライマリ レプリカ (グローバル プライマリとも呼ばれます)が、データベース ミラーリング エンドポイントを通して、セカンダリ可用性グループのフォワーダー レプリカと正常に同期している。
- セカンダリ可用性グループのフォワーダー レプリカが、データベース ミラーリング エンドポイントを通して、セカンダリ可用性グループのセカンダリ レプリカと正常に同期している。
- 現在の truncation_lsn と last_hardend_lsn を各レプリカで記録します。
- データベースに変更を加えます。ここでは test データベースに INSERT 文を10回発行します。
- 各レプリカにて LSN が同じ分だけ進む事を確認します。
- トランザクションログのバックアップを、グローバルプライマリの test データベースにて取得します。
- 現在の truncation_lsn と last_hardend_lsn の確認をします。
- セカンダリAG のセカンダリレプリカへのデータ移動を中断します。
- 2-5 を繰り返します。