【本期推荐专题】在DevOps市场中,华为云DevCloud拔得头筹,看它如何助力企业面对商业环境瞬息万变快速响应。
【摘要】 目前,DRS已支持其他云、本地IDC、ECS自建MySQL、SQL Server、MongoDB(数据库种类)、PostgreSQL等多种数据库引擎,支持通过公网网络、华为VPN、华为云VPC网络环境下等多种网络场景的数据实时迁移和实时同步。同时,DRS还提供了丰富的数据辅助功能,今天,我们就来聊聊在您进行数据同步过程中的“小助手”---数据过滤。
本文分享自华为云社区《【云小课】【第15课】聊一聊DRS的数据过滤特性》,原文作者:数据库的小云妹。
众所周知,数据复制服务(Data Replication Service,简称DRS)是一种易用、稳定、高效、用于数据库在线迁移和数据库实时同步的云服务。
目前,DRS已支持其他云、本地IDC、ECS自建MySQL、SQL Server、MongoDB(数据库种类)、PostgreSQL等多种数据库引擎,支持通过公网网络、华为VPN、华为云VPC网络环境下等多种网络场景的数据实时迁移和实时同步。同时,DRS还提供了丰富的数据辅助功能,今天,我们就来聊聊在您进行数据同步过程中的“小助手”---数据过滤。
首先,我们来了解一下数据过滤特性的业务场景----数据同步。
1、数据同步介绍
功能介绍
数据同步是DRS的重要功能之一。即在不同的系统之间,将数据通过同步技术从一个数据源拷贝到其他数据库,并保持一致,实现关键业务的数据实时流动。
常用场景
实时分析,报表系统,数仓环境。
功能特点
数据同步功能聚焦于表和数据,并满足多种灵活性的需求,例如多对一(如下图所示)、一对多,动态增减同步表,不同表名之间同步数据等。
对于数据同步有了初步的了解之后,我们可以知道,数据同步不同于迁移,迁移是以整体数据库搬迁为目的,而数据同步是维持不同业务之间的数据持续性流动。
那么,在数据的定期同步、拆分汇总数据表等多种应用场景中,我们时常想要实时获取各个表中的某一部分数据来做汇总分析,这个时候,如果能够设定一些同步的规则,来帮助我们更准确、更高效的同步数据,就变得尤为重要。
DRS的数据过滤特性,就是解决这种场景的必备“良药”,通过对同步的对象进行加工,为选择的对象添加规则,方便您自己设定想要同步的数据条件。下面,我们就来了解一下今天的主角----数据过滤。
2、数据过滤
原理
基于以数据一致性为首要目标的原则,我们通过一个例子,来看看数据过滤规则添加后,在源库执行更新操作会遇到的几种场景:
假设,源库中的id为1、2、3、5、6。我们设置数据过滤条件为id between 1 and 5,那么数据同步后目标库的id为1、2、3、5。如下图所示:
首先,我们来看几种常见的更新场景:
■ 如果在源库中插入id=1.5,此id符合过滤条件(id between 1 and 5),则目标库会执行相同的更新操作。如下图所示:
■ 如果在源库中删除id=2,此id符合过滤条件(id between 1 and 5),则目标库会执行相同的删除动作。如下图所示:
■ 如果在源库中将id=3更新为id=3.5,更新后的id仍符合过滤条件(id between 1 and 5),则目标库会执行相同的更新操作。如下图所示:
以上,是我们在进行数据同步时,常常遇到的几种场景。当然,有时我们也会遇到如下几种较为特殊的更新场景:
■ 如果我们执行更新操作,将源库中的id=2更新为id=7,即更新前源库中的id=2符合过滤条件(id between 1 and 5),更新后id=7不符合过滤条件,继续同步时,目标库会执行相同的更新操作,同步后目标库的id为1、3、5、7。如下图所示:
■ 如果我们执行更新操作,将源库的id=6更新为id=4,即更新前源库中的id=6不符合过滤条件(id between 1 and 5),更新后id=4符合过滤条件,继续同步时,目标库执行相同的更新操作,但是此时目标库并没有id=6,无法匹配数据。
这时,我们会根据当前同步任务选定的冲突处理策略来处理:
● 冲突处理策略为“覆盖”,则id=4变成新数据在目标数据库插入,源库和目标库的结果仍然一致。如下图所示:
● 冲突处理策略为“忽略”,则会忽略该更新动作,即源库有id=4,而目标库没有,这种情况目标库数据将少于源库。如下图所示:
● 冲突处理策略为“报错”,则任务将会失败并立即中止。
操作步骤
1. 登录管理控制台。
2. 单击管理控制台左上角的图标,选择区域和项目。数据复制服务目前也支持通过使用专属计算集群服务购买的物理机资源,创建所需的实例,实现数据迁移和数据同步。您可以选择自己的专属计算集群。
3. 在“所有服务”或“服务列表”中,选择“数据库 > 数据复制服务”,进入数据复制服务信息页面。
4. 在“数据同步管理”页面,单击“创建同步任务”。
5. 在“场景选择”页面,分别选择“源数据库来源”和“目标数据库来源”后,单击“下一步”进入“同步实例”页面。
6. 在“同步实例”页面,填选任务名称、通知收件人信息、描述、同步实例信息,单击“下一步”。
7. 同步实例创建成功后,在“源库及目标库”页面,填选源库信息和目标库信息后,单击“源库和目标库”处的“测试连接”,分别测试并确定与源库和目标库连通后,勾选协议,单击“下一步”。
8. 在“设置同步”页面,选择数据冲突策略和同步对象,单击“下一步”。
图1 同步模式
表1 同步模式和对象
9. 在“数据加工”页面,“加工类型”选择“数据过滤”
图2 数据加工
10. 在“对象选择”区域选择需要加工的表对象。
11. 在过滤条件区域,填写过滤条件(只需填写SQL语句的WHERE之后部分,例如id=1)后,单击“校验”。
说明:
● 每张表仅支持添加一个校验规则。
● Oracle为源库的数据过滤每次最多支持20000张表,MySQL为源库的数据过滤每次最多支持10000张表。
● 过滤条件不支持使用某种数据库引擎特有的packege、函数、变量、常量等写法,须使用通用SQL标准。
12. 校验通过后,单击“生成加工规则”,即可在加工规则表格中看到该规则。
13. 检查无误后,单击“下一步”,进入下一步操作。
DRS提供在线迁移、备份迁移、数据同步、数据订阅和多活灾备等多种功能,以各自独有的特点适用不同的数据流通场景,为您提供安心且省心的数据复制体验。欲了解详情请戳这里。