【学习背景】
近期在给一个电商客户做用户行为分析的大数据平台,计划使用华为云的mapreduce服务中的spark和hive组件。当使用华为云数据迁移服务CDM迁移完在源端阿里云的数据库后,发现没有触发增量迁移的相关功能,那么问题来了:源端阿里云上的数据库发生更新后,华为云如何感知到数据变化,如何自动实时复制增量数据呢?分析用户行为数据(检测薅羊毛、预警店铺当日最大转账额度等)都需要实时数据分析后进行预警。
本文主要探讨用阿里云DTS服务如何将RDS mysql的增量数据复制到华为云RDS mysql中。
整体架构如下:
【原因分析】
华为云CDM作为一个通用的迁移框架,为了考虑每种迁移场景的增量复制需求,通过源数据的文件或表中的时间字段的更新情况来判断数据更新,从而进行的增量复制。 华为云CDM(云迁移服务)的说明如下:
【增量数据自动复制到华为云的解决方案】
方案1:在源数据库中每张表增加变更时间记录或者业务程序在更新源数据库时,同时双写一份到华为云。
结论:不可行,涉及源数据库或业务程序的改动,工作量大,风险大,无法确认哪些业务更新了什么字段。
方案2:通过华为云DMS服务将mysql数据库的binlog日志进行识别差异数据和增量复制。详细架构图如下。
结论:需要阿里云数据库主库的root权限,这样才能访问到binlog日志,进行增量复制。
考虑到root账号的敏感性,本文选择使用阿里云DTS迁移工具来将数据迁出阿里云。 如果使用华为DRS迁移工具将数据从阿里云迁移过程,意味着客户要提供数据库root账号给华为,客户肯定会有担忧。