BigQueryからCloud SQLに対してクエリを実行できる、Cloud SQL federated query機能はとても便利です。
この機能を活用すれば、Cloud SQLからBigQueryに対するETLを作成しなくても、簡単にBigQueryにデータを転送できます。
しかし、この機能はCloud SQLとBigQueryの2つが同一リージョンにある場合のみ使用することができます。
https://cloud.google.com/bigquery/docs/cloud-sql-federated-queries
では、東京リージョンのCloud SQLからUSマルチリージョンのBigQueryに対してクエリを実行したい場合はどうすればよいのでしょうか?
解決策
Cloud SQLのリージョン間レプリケーション機能を使い、USリージョンにリードレプリカを作成する。
例えば以下のようなDBインスタンスが東京リージョンにあったとします。
resource "google_sql_database_instance" "hoge-instance" {
name = "hoge"
database_version = "MYSQL_5_7"
region = "asia-northeast1"
settings {
tier = "db-n1-standard-1"
backup_configuration {
binary_log_enabled = true
enabled = true
start_time = "17:00" # JST:02:00
}
}
}
この場合は、このようにアイオワリージョン(us-central1)にリードレプリカを作ることで、USリージョンのBigQueryとの連携が可能になります。
resource "google_sql_database_instance" "hoge-replication" {
name = "hoge-replication"
database_version = "MYSQL_5_7"
master_instance_name = google_sql_database_instance.hoge-instance.name
region = "us-central1"
# プライマリーインスタンスが死んでも、このインスタンスにはフェイルオーバーさせない
replica_configuration {
failover_target = false
}
settings {
tier = "db-n1-standard-1"
backup_configuration {
enabled = false
}
}
}