【云小课】【第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 同步模式和对象
参数 |
描述 |
冲突策略 说明 Oracle->RDS for MySQL同步不支持冲突策略。 |
数据复制服务提供的数据同步功能使用了主键或唯一键冲突策略,这些策略可以由您自主选择,尽可能保证源数据库中有主键约束或唯一键约束的表同步到目标数据库是符合预期的。 冲突策略目前支持如下三种形式: ● 忽略 当同步数据与目标数据库已有数据冲突时(主键/唯一键存在重复等),将跳过冲突数据,继续进行后续同步。 ● 报错 当同步数据与目标数据库已有数据冲突时(主键/唯一键存在重复等),同步任务将失败并立即中止。 ● 覆盖 当同步数据与目标数据库已有数据冲突时(主键/唯一键存在重复等),将覆盖原来的冲突数据。 说明 目前仅MySQL->RDS for MySQL的同步场景支持设置“覆盖”冲突策略。 当数据发生冲突时,针对如下情况,建议选择“忽略”或者“覆盖”,否则建议选择“报错”: ● 目标数据库存在数据 ● 多对一同步场景 ● 目标数据库手动更新数据 |
是否过滤DROP DATABASE 说明 Oracle->RDS for MySQL同步不支持该功能。 |
数据同步过程中,源数据库端执行的DDL操作在一定程度上会影响数据的同步能力,为了降低同步数据的风险,数据复制服务提供了过滤DDL操作的功能。 目前支持默认过滤删除数据库的操作。 ● 是,表示数据同步过程中不会同步用户在源数据库端执行的删除数据库的操作。 ● 否,则表示数据同步过程中将相关操作同步到目标库。 说明 目前仅MySQL->MySQL的数据同步场景支持过滤DDL操作。 |
对象同步范围 |
对象同步范围支持索引同步,您可以根据业务需求选择是否进行索引同步。 |
同步对象 |
同步对象支持库级和表级同步,您可以根据业务场景选择对应的数据进行同步。如果有切换源数据库的操作,请在选择同步对象前单击右上角的,以确保待选择的对象为最新源数据库对象。 数据同步功能可以支持源数据库和目标数据库中的同步对象(包括数据库、schema、表)的名称不同。如果同步的数据库对象在源数据库和目标数据库中的命名不同,那么可以使用数据复制服务提供的对象名映射功能进行映射。其中包括:库映射、schema映射、表映射。 |
9. 在“数据加工”页面,“加工类型”选择“数据过滤”
图2 数据加工
10. 在“对象选择”区域选择需要加工的表对象。
11. 在过滤条件区域,填写过滤条件(只需填写SQL语句的WHERE之后部分,例如id=1)后,单击“校验”。
● 每张表仅支持添加一个校验规则。
● Oracle为源库的数据过滤每次最多支持20000张表,MySQL为源库的数据过滤每次最多支持10000张表。
● 过滤条件不支持使用某种数据库引擎特有的packege、函数、变量、常量等写法,须使用通用SQL标准。
12. 校验通过后,单击“生成加工规则”,即可在加工规则表格中看到该规则。
13. 检查无误后,单击“下一步”,进入下一步操作。
----结束
DRS的数据同步功能除了提供数据过滤的贴心特性之外,还提供了对象名映射、异常诊断、续传、重试、暂停、重置等多种特性,给您的数据同步场景提供保障,解决您的后顾之忧,欲了解详情请戳这里。
DRS提供在线迁移、备份迁移、数据同步、数据订阅和多活灾备等多种功能,以各自独有的特点适用不同的数据流通场景,为您提供安心且省心的数据复制体验。欲了解详情请戳这里。
- 点赞
- 收藏
- 关注作者
评论(0)