はじめに
BigQuery Managed Disaster Recovery は、異なるリージョン間でデータを自動レプリケーションし、リージョン障害時には簡単に別のリージョンでの復旧を可能にする機能です。
機能についての概要はGoogle Cloud Next’25のセッションについてのブログ記事に譲り、ここでは実際の設定内容や挙動をご説明します。
動作検証
実施概要
東京(asia-northeast1)をプライマリ、そして大阪(asia-northeast2)をセカンダリとしたシステムで、以下を検証します。
- フェイルオーバー(東京から大阪への切り替え)
- フェイルバック(大阪から東京への切り替え)
前提条件
利用するエディションは Enterprise Plus 版です。詳細なエディションごとの機能は公式ドキュメントをご参照ください。
手順
Disaster Recoveryの設定
- データセットを作成します。
データセットを作成する時点ではプライマリのみを指定して、あとでセカンダリを追加します。
データセット内に適当なデータを含むテーブルを作成します。
- BigQueryのスロットを予約します。
・Enterprise Plusエディション・場所はasia-northeast1(東京)・セカンダリロケーションは asia-northeast2(大阪)それ以外はできるだけ最小にして作成しました。
- 作成した予約にデータセットを割り当てます。「障害復旧」にある[フェイルオーバーデータセットを追加]から実行します。
割り当てが完了すると、asia-northeast1、asia-northeast2それぞれでデータセットの状態が表示されます。
フェイルーオーバー操作とクエリ実行
- フェイルオーバー前に、プライマリリージョンで動作するかを確認するため、簡単なSELECTクエリを実行します。
asia-northeast1で実行されたことが分かります。
また明示的にasia-northeast2をロケーション指定すると、クエリ結果は同じですが期待通りasia-northeast2で実行されたことが分かります。
- フェイルオーバーを実行します。予約割り当ての画面から「フェイルオーバー」を行います。
数分後にはプライマリ/セカンダリが入れ替わったことが確認できました。 - クエリ確認を確認します。
先ほどと同じようにクエリを実行すると、ロケーション指定が無い状態ではasia-northeast2で実行されたことが分かります。
フェイルオーバーによってセカンダリになったasia-northeast1でのクエリ実行は、ロケーション指定により可能です。
このように「フェイルオーバー」操作1つでプライマリ/セカンダリが切り替わります。クエリを実行する側としても、ロケーションやクエリの中身を意識せずとも、プライマリになっているロケーションに対して操作が実施可能です。
フェイルバック操作とクエリ実行
フェイルバック操作はフェイルオーバーと同様です。
- 現在の状態から「フェイルオーバー」を再度実施します。
東京から大阪へのフェイルオーバー実施前と同じ状態に戻りました。 - クエリ実行確認すると、ロケーション指定が無い状態でもasia-northeast1で実行されており、プライマリがasia-northeast1に戻っていることが分かります。
セカンダリになったasia-northeast2でのクエリ実行は、ロケーション指定により可能です。
注意事項
本検証では、SELECTクエリでのみで確認しました。ただし、容量の割り当てを利用した状態でその他のクエリを実行する場合には、クエリに対する割り当ての設定もしなければなりません。その詳細については別記事でご紹介していますので、後続のこちらの記事も併せて確認してください。
まとめ
BigQuery のリージョン切り替えを「フェイルオーバー」ボタン1つで実現できる簡単さを確認しました。セカンダリリージョンへのリアルタイム性は若干の遅延があるものの、別リージョンにコピーで退避させるよりもはるかに確実性が高くオペレーションとしても簡易です。
参考
- マネージド障害復旧に移行する | Google Cloud
- BigQuery エディション | Google Cloud
- スロット予約の操作 | Google Cloud
- Google Cloud Next’25 セッション | XIMIXブログ
Google Cloud、Google Workspace に関するご相談はXIMIXへ!
Google Cloud、Google Workspaceに関する お問い合わせはこちら
執筆者紹介

- カテゴリ:
- Google Cloud