如何跨项目创建Cloud SQL只读副本以实现BigQuery联邦查询
跨项目创建Cloud SQL只读副本用于BigQuery联邦查询的解决方案
核心问题原因
你之前的命令失败是因为默认情况下,--master-instance-name只会在当前指定的--project范围内查找实例,跨项目时必须明确指定源实例的所属项目和区域,同时需要源项目授权目标项目的Cloud SQL服务账号。
操作步骤
源项目授权目标项目服务账号
源项目的管理员需要为目标项目的Cloud SQL服务账号授予权限:- 目标项目的Cloud SQL服务账号格式为:
service-<目标项目ID>@gcp-sa-cloudsql.iam.gserviceaccount.com - 给该账号添加源项目的
Cloud SQL Replica Editor角色(或更宽泛的Cloud SQL Editor角色),确保它有权限创建源实例的副本。
- 目标项目的Cloud SQL服务账号格式为:
使用正确的gcloud命令创建跨项目副本
执行以下命令,明确指定源实例的项目、区域,以及目标项目和副本的区域:gcloud sql instances create <my-replica> \ --master-instance-name <source-instance> \ --master-instance-project <source-project> \ --master-instance-region <source-instance-region> \ --project <destination-project> \ --region <destination-region>这个命令会告诉gcloud去
<source-project>的<source-instance-region>区域查找源实例,然后在<destination-project>的<destination-region>创建只读副本。配置BigQuery联邦查询
副本创建完成并同步完成后,直接在你的项目中创建BigQuery到该副本的联邦连接即可,因为副本属于你的项目,权限验证不会再出现跨项目问题。
补充说明
- 该方法仅适用于同一Google Cloud组织内的跨项目副本创建;如果是跨组织场景,确实只能使用外部副本(external replica)方案。
- 确保源实例已开启二进制日志(默认Cloud SQL实例已开启,用于副本数据同步)。
内容的提问来源于stack exchange,提问作者LoicM
相关产品推荐
相关产品推荐

