はじめに
前の記事でご紹介した、BigQuery Managed Disaster Recoveryの続きです。前の記事ではレプリカリージョンへのデータ切り替えができることの確認だけでしたが、実際にこのBigQueryテーブルをシステムで利用する際に必要なことが「BigQuery Editions」の機能観点からありますので、別記事としてご紹介します。
現状動作
フェイルオーバーデータセットの設定まで出来た状態では、プライマリ、セカンダリそれぞれを指定してSELECTクエリによるデータ取得が出来ることは確認できました。ただし、それ以外のクエリ実行は、Editionsおよびスロットの機構により出来ない状態です。
ためしにデータを挿入するクエリを実行しようとすると、以下のエラーが出力されます。
The job references a table that belongs to a failover dataset in the "asia-northeast1" region (“テーブル名”). However, only jobs that run on a reservation with the "ENTERPRISE_PLUS" edition are allowed access to failover datasets.
フェイルオーバーデータセットへの書き込みはEnterprise Plusエディションでのみ許可されているとのことですので、設定が必要です。
動作検証
実施概要
東京(asia-northeast1)をプライマリ、そして大阪(asia-northeast2)をセカンダリとしたデータセットのフェイルオーバーが出来ている状態で、データセットへの書き込みが出来るようにし、実際に書き込み操作を行います。
手順
ジョブ割り当ての設定
- 既に作成した予約にクエリを割り当てます。
[割り当て]にある[割り当てを作成]から実施可能です。クエリを実行するプロジェクトを指定します。
割り当てが完了すると、以下のように表示されます。
-
割り当てによるジョブ実行を確認します。
先ほど失敗していたBigQuery上でInsertのクエリを実行すると、正常に実行されました。また、割り当てた予約にも紐づいています。
フェイルーオーバー操作とクエリ実行
- フェイルオーバーを実行します。
- クエリを実行します。先ほどと同じInsertのクエリを実行すると、期待通りasia-northeast2でクエリが動作しました。また、予約についてもasia-northeast2で紐づいています。
この「予約がasia-northeast2に紐づいている」というのが今回の肝です。
あらためて作成した予約を「容量管理」で見てみると、当初asia-northeast1に作ったはずのものが、asia-northeast2の方に移行されています。つまり、フェイルオーバーでは単純にデータセットのプライマリ/セカンダリロケーションが変わるわけではなく、確保している予約についても自動で切り替わるということです。プライマリ/セカンダリそれぞれで予約を取っておく必要もありません。
フェイルバック操作とクエリ実行
- 「フェイルオーバー」を再度実施します。
- 先ほどと同じInsertのクエリを実行すると、こちらも期待通りasia-northeast1でクエリが動作しました。また、予約についてもasia-northeast1で紐づいています。
まとめ
前回の記事での検証と合わせて、フェイルオーバーをしつつBigQueryのシステム利用が出来ることが確認できました。予約スロットもフェイルオーバーによって自動的に切り替わるのは、コスト面でも運用面でも痒いところに手が届いている機能だなと感じました。
この機能の利用をぜひご検討ください。
参考
- マネージド障害復旧に移行する | Google Cloud
- BigQuery エディション | Google Cloud
- スロット予約の操作 | Google Cloud
- Google Cloud Next’25 セッション | XIMIXブログ
Google Cloud、Google Workspace に関するご相談はXIMIXへ!
Google Cloud、Google Workspaceに関する お問い合わせはこちら
執筆者紹介

- カテゴリ:
- Google Cloud