Cloud Spanner CDC转Pub/Sub的Dataflow任务启动失败及元数据咨询
问答:Cloud Spanner变更数据同步Dataflow任务启动失败及元数据存储疑问
问题描述
尝试构建将Cloud Spanner变更数据同步到Pub/Sub Topic的Dataflow任务,点击创建后直接失败,报错信息如下:
"Failed to start the VM, launcher-202305251132348291864736406387748, used for launching because of status code: INVALID_ARGUMENT, reason: Invalid Error: Message: Invalid value for field 'resource.networkInterfaces[0].network': 'global/networks/default'. The referenced network resource cannot be found. HTTP Code: 400."
- 不清楚是否需要创建VPC,GCP文档未提及相关要求及用途;若VPC确实重要,为何GCP文档未说明?
- 创建Cloud Spanner变更数据流时,未单独创建实例/数据库存储变更元数据,因数据量较小(仅8列文本,行数不多),将元数据与实际数据库放在一起是否可行?
解答
一、Dataflow启动失败的VPC问题
- 报错根源:你的GCP项目不存在默认VPC(
global/networks/default),而Dataflow默认会尝试绑定这个网络启动Launcher VM,找不到就会触发400错误。 - VPC的必要性:Dataflow运行必须依赖VPC网络,用于Worker VM与Spanner、Pub/Sub等GCP服务的内部通信。文档未特意强调,是因为GCP新项目默认会自动创建默认VPC,只有当你手动删除了默认VPC,或者项目是早期无默认VPC的版本时,才会遇到这个问题。
- 解决方式:
- 方案1:在VPC网络控制台中创建默认VPC(直接选择“创建默认VPC”选项,GCP会自动配置子网、防火墙规则等必要组件);
- 方案2:创建Dataflow任务时,手动指定项目中已存在的自定义VPC网络及对应的子网。
二、Spanner变更元数据存储问题
- 可行性:完全可以将变更数据流的元数据表与业务数据表放在同一个Spanner数据库中。变更数据流的元数据仅记录变更偏移量、处理状态等少量信息,你的数据体量(8列文本、行数少)完全不会对数据库造成性能压力。
- 注意事项:元数据表由变更数据流自动创建和维护,请勿手动修改或删除这些表,否则会导致Dataflow任务无法正确追踪变更进度,引发重复消费、漏消费等问题。
内容的提问来源于stack exchange,提问作者Jatin
相关产品推荐
相关产品推荐

