GCP Datastream(MySQL到BigQuery)主键表无is_deleted字段及同步异常问询
问题原因分析
当MySQL源表定义主键时,Datastream默认启用合并更新模式,该模式的核心特性如下:
- 仅在BigQuery中保留每条主键记录的最终状态,不会留存修改、删除等中间变更事件
- 元数据字段不会生成
is_deleted列,删除操作会直接移除BigQuery中对应主键的行,而非标记删除
而源表无主键时,Datastream自动切换为追加模式:
- 所有变更(插入、更新、删除)都会作为新行追加到BigQuery,同时生成
is_deleted元数据字段标记删除事件,因此能完整记录所有事件流
解决方案:切换为全量变更捕获模式
若需保留所有变更事件(含历史修改、删除记录),无论源表是否有主键,都可手动修改同步配置:
- 进入GCP控制台的Datastream服务,找到对应数据流
- 编辑流的BigQuery目标端配置
- 在表映射设置中,将目标表的同步模式从默认的
合并更新改为全量变更捕获 - 保存配置并重启数据流
修改后,即使源表带主键,BigQuery也会:
- 留存所有变更事件(插入、更新、删除均作为独立行存储)
- 自动添加
is_deleted元数据字段,删除事件会将该字段标记为true
注意事项
- 切换模式后需重新初始化同步(或执行全量同步),确保历史数据与变更事件被正确捕获
- 全量变更捕获模式会增加BigQuery存储用量,需根据业务需求评估成本
内容的提问来源于stack exchange,提问作者ssm
相关产品推荐
相关产品推荐

