【正解】C
【0からの解説】
①前提知識:Cloud SQL for MySQL の Enterprise Plus エディションでは「高度な障害復旧(advanced DR)」を利用できます。これは、別リージョンに作成したクロスリージョン リードレプリカを「DR レプリカ(フェイルオーバー DR レプリカ)」として指定しておき、(a) リージョン障害時には
gcloud sql instances promote-replica REPLICA --failover による「レプリカ フェイルオーバー」で即座にプライマリを切り替え、(b) 障害がないときの DR テストや、フェイルオーバー後に元の構成へ戻すときには
gcloud sql instances switchover REPLICA による「スイッチオーバー」でプライマリと DR レプリカの役割を入れ替える仕組みです。スイッチオーバーは、レプリカが全トランザクションを適用し終えてから役割を交代するため「データ損失ゼロ」です。一方、レプリカ フェイルオーバーは非同期レプリケーションの遅延分のデータが失われる可能性があります。DR レプリカの指定は
gcloud sql instances patch PRIMARY --failover-dr-replica-name=REPLICA で行います。
DR レプリカの主な要件:Enterprise Plus エディションであること、プライマリと同じメジャー バージョンかつ同じマイナー バージョン(MySQL 8.0.31 以降)であること、プライマリと別リージョンにあること、プライマリの直接のリードレプリカであること(カスケード レプリカや外部レプリカは不可)、バイナリログが有効であること、ポイントインタイム リカバリ(PITR)用のトランザクション ログを Cloud Storage に保存していること、など(現行の Cloud SQL ドキュメントで「メジャー・マイナー バージョンともプライマリと同一、かつ MySQL 8.0.31 以降」と明記されています)。
②要件と制約語の整理:(1) プライマリは us-central1・Enterprise Plus・MySQL 8.0.34、(2) DR 先は us-west1、(3)「データ損失ゼロ」で DR を「設定してテスト」する。
③正解の理由:C は、プライマリと同じ 8.0.34 のクロスリージョン リードレプリカを us-west1 に作成し(DR レプリカの要件を満たす)、DR レプリカとして指定したうえで、データ損失ゼロの switchover でテストしています。要件をすべて満たすのは C だけです。
【誤りの選択肢】
A:DR レプリカはプライマリの直接のリードレプリカである必要があり、カスケード リードレプリカ(レプリカのレプリカ)は DR レプリカに指定できません。
B:DR レプリカはプライマリと同じメジャー バージョンかつ同じマイナー バージョンである必要があります。プライマリが 8.0.34 なのに 8.0.37 のレプリカを作成すると、DR レプリカとして指定できません。
D:レプリカを DR レプリカとして指定する手順がなく、高度な DR の構成になっていません。また promote-replica の failover は障害時に即座に切り替える操作で、レプリケーション遅延分のデータが失われる可能性があるため「データ損失ゼロ」のテストになりません。データ損失ゼロで役割を入れ替えてテストするには switchover を使います。
【参考】
高度な障害復旧(DR)を使用する | Cloud SQL for MySQLCloud SQL の障害復旧(DR)について | Cloud SQL for MySQLリージョン移行または障害復旧のためにレプリカを昇格させる | Cloud SQL for MySQL