作者:MeshCloud脉时云公有云架构师许多杰
引言
本次架构设计将利用Google Cloud Datastream实现变更数据捕获 (CDC,Change Data Capture ) ,实现将Cloud Sql数据库中的数据实时复制到BiqQuery中。
整体架构
本次实验采用的新解决方案:(目前处于Preview时期)
之前的解决方案:
https://cloud.google.com/datastream/docs/implementing-datastream-dataflow-analytics
技术简介
CDC简介
变更数据捕获CDC(Change Data Capture )会捕获数据中的变化,这是复制数据的 ETL的一种 模式。CDC的实现机制是跟踪源数据库中的更改并将其应用于目标数据库或数据仓库,从而在目标数据库或数据仓库中,我们可以进行所有类型的分析、报告生成等,不会影响源数据库的性能。
因此,用户可以在不降低源性能的情况下使用原始系统,并且运营、产品、商务部门和第三方可以随时近乎实时地获取所需的报告。
Datastream实践
Datastream是一项无服务器且易于使用的变更数据捕获和复制服务。变更数据捕获通过从源数据库读取更改事件(插入、更新和删除)并将其写入数据目的地来集成数据,以便执行操作。Datastream 支持将 Oracle 和 MySQL 数据库中的数据流更改到 BigQuery、Cloud SQL、Cloud Storage 和 Cloud Spanner 中,从而支持实时分析、数据库复制和其他使用场景。未来还会支持更多来源和目标。
本次实验将BigQuery作为目标,最终用户可以通过利用BiqQuery的无服务器、内置机器学习和 AI 集成、实时分析、自动高可用性、存储与计算相分隔、自动备份和轻松恢复、PB 级数据规模、灵活的价格模式等特性,完成分析等需求。
目标
将Cloud Sql数据库中的数据实时复制到BiqQuery中,从而可以在BigQuery中执行查询分析操作。
准备工作
- 创建Cloud Sql 数据库作为源数据库
- 登录GCP Console 的账号具有Datastream admin角色,并且有serviceusage.services.list 权限(系统提供的Quota Viewer角色包含此权限,否则在创建流的步骤会出现无法打开Configure destination配置页面)。
实施步骤
创建连接配置文件
- 为 Mysql 数据库创建源连接配置文件
- 选择IP白名单的方式连接Cloud Sql:
- 为 BigQuery 创建目标连接配置文件
创建流
- Source type选择mysql,Destination type选择BigQuery(PREVIEW)
- 配置并测试源数据库连通性
- 选择需要通过CDC方式复制的对象,整个数据库或表等
- 选择配置连接文件
- 配置复制到BigQuery中的目标
- 完成流的创建:
启用流
验证流
在流启用几分钟后,在BigQuery中可以看到Cloud Sql中的表数据已经同步复制到Bq Dataset中了。
验证
- 在源数据库插入一条数据
- 在目标BigQuery中可以看到同步过来的数据
上面的测试可以验证整个数据流正常,我们利用Google Cloud Datastream实现变更数据捕获 (CDC) ,实现了将Cloud Sql数据库中的数据实时复制到BiqQuery中。
总结
通过Datastream Preview的功能,我们可以直接将Cloud Sql等源数据库中的数据通过CDC的方式复制到BiqQuery中。中间省去了之前的方案中使用的Cloud Storage、Pubsub、Dataflow等组件,降低了技术人员配置的难度,大大减少了整个方案的耗时。
常见问题
- 新方案与之前的方案,在延时上有什么差异?
- 之前的方案进行测试,数据最终落到目标数据集中用时11分50秒。
(注意:这里是指最终的数据集,以在源数据库中创建表的一对一副本,不是Dataflow 用来暂存从 Datastream 接收数据更改的临时数据集)
- 新的方案进行测试,数据落到目标数据集用时1分46秒。