GaussDB(DWS)DRS实时数据同步

举报
睡觉是大事 发表于 2024/02/07 17:11:01 2024/02/07
【摘要】 GaussDB(DWS)DRS实时数据同步 GaussDB(DWS)DRS实时数据同步 1. 前言 2. 背景介绍 3. 原理介绍 4. 前提条件 4.1 源端: 4.2 目标端: 5. DRS实时业务全量+增量同步 5.1 创建实时同步任务 5.2 选择同步链路 5.3 配置源端和目标端数据库IP、用户密码 5.4 选择需要同步的表 5.5 数据加工(可选) 5.6 自动化预检查 5.7...

GaussDB(DWS)DRS实时数据同步

1. 前言

  • 适用版本:【Gauss 200以上】

    新时代在移动互联网、电商、IoT等场景会产生大量实时数据,以往的离线批量计算时效性较差,业务人员无法根据自己的即时性需要获取几分钟之前甚至实时数据,为了快速获取实时或者准实时数据,数据发生后尽快的达到用户的手中,释放实时或者准实时数据价值,实时数仓的系统性构建需求也应运而生,本文以MYSQL库为例实时同步GaussDB(DWS)场景,分享使用华为云模式下DRS(数据复制服务)构建快速数据接入方案。

2. 背景介绍

​ 我们知道传统的数仓系统会将业务数据集中进行存储后,以批量计算构建出各种不同的业务层报表基础数据,从而供上层应用进行查询和展示。这种业务典型的特点是构建T+1或者T + N的数据,通过定时任务每天拉取增量数据,然后创建各个业务相关的主题维度数据,对外提供T+1或者T+N的数据查询接口。新时代在移动互联网、电商、IoT等场景下会产生大量实时数据,以往的离线批量计算时效性较差,业务人员无法根据自己的即时性需要获取几分钟之前甚至实时数据,为了快速获取实时或者准实时数据,数据发生后尽快的达到用户的手中,释放实时或者准实时数据价值,实时数仓的系统性构建需求也应运而生,本文以MYSQL库为例实时同步GaussDB(DWS)场景,分享使用华为云模式下DRS(数据复制服务)构建快速数据接入方案,供有需求伙伴参考。

3. 原理介绍

​ MYSQL使用binlog日志进行数据库内容修改记录,DRS串行读取MYSQL的binlog日志进行解析,在处理完数据依赖后,并发进行数据入库DWS,针对MYSQL的binlog的三种模式日志简单说明如下:

日志模式 说明 优点 缺点
Row level 日志中会记录成每一行数据被修改的形式 日志中可以不记录执行的sql语句的上下文相关的信息,仅仅只需要记录那一条记录被修改的形式。 row level 的日志内容会非常清楚的记录下每一行数据修改的细节,而且不会出现某些特定情况下的存储过程或function及trigger的调用和触发无法被正确复制的问题 会产生大量的日志内容
Statement level 每一条会修改数据的sql都会记录到master的bin-log中 解决了 row level 下的缺点,不需要记录每一行数据的变化,减少bin-log日志量,节约IO,提高性能 MySQL数据库新功能的加入,修改数据的时候使用了某些特定的函数功能不能正确复制
Mixed 前两种模式的结合。会根据执行的每一条具体的sql语句来区分对待记录的日志形式

DRS在解析binlog是要求MYSQL库将binlog的日志模式设置为Row level,由于实时同步对系统要求较高,这里list出实时同步场景对MYSQL库的要求表,这里大部分需求项已经自动化到DRS自动化检查任务里,可以大胆应用哈。

类型名称 使用限制(DRS自动检查)
数据库权限设置 • 源数据库帐户需要具备如下权限:SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。• 目标数据库帐号必须具有每张表的如下权限:INSERT、SELECT、UPDATE、DELETE、CONNECT、CREATE、REFERENCES。
同步对象约束 • 支持表、索引、约束(主键、空、非空)的同步,不支持视图、外键、存储过程、触发器、函数、事件、虚拟列的同步。• 不支持的数据类型有:xml、geometry、point、lineString、polygon、geometrycollection、multipoint、multilinestring、multipolygon。• 不支持非MyISAM和非InnoDB表的同步。
源数据库要求 • MySQL源数据库的binlog日志必须打开,且binlog日志格式必须为Row格式。• 在磁盘空间允许的情况下,建议源数据库binlog保存时间越长越好,建议为3天。• 源数据库expire_logs_days参数值为0,可能会导致同步失败。• 必须设置MySQL源数据库的server-id,server-id的取值范围在2-4294967296之间。• 源数据库中的库名不能包含:’.<>以及中文等其他非ASCII字符。• 源数据库中的表名、视图名不能包含:’<>以及中文等其他非ASCII字符。
目标数据库要求 • 目标数据库实例的运行状态必须正常。• 目标数据库实例必须有足够的磁盘空间。• 目标数据库的时区设置必须与源数据库一致。

废话不多说,开始实操哈!

4. 前提条件

4.1 源端:

Mysql源端数据库,提供数据库连接IP、库、用户名和密码,需同步的表。示例:

以mysql5云上实例为例,IP为:192.168.0.33,端口:8000,

用户名:root,密码:xxxxxx

img

在源端数据库内新建原表test_t1,插入3条记录。

img

4.2 目标端:

DWS服务集群,提供数据库连接IP、库、用户名和密码,需同步的表。示例:

这里已DWS8.1.0云上实例为例,IP为:192.168.0.225,端口:8000,

用户名:dbadmin,密码:xxxxxx

img

5. DRS实时业务全量+增量同步

5.1 创建实时同步任务

我们通过DRS实时同步任务来进行MYSQL到DWS的实时同步功能实现,如下在实时同步管理中创建同步任务。

img

5.2 选择同步链路

建立DRS同步实例,选择region,给实时同步实例起名,选择好源MYSQL和目标库GaussDB(DWS)链路类型。

img

img

5.3 配置源端和目标端数据库IP、用户密码

配置源库和目标库的实例信息(用户名、密码),并测试连通性,由于链路内部会记录用户名和密码信息,点击同意后继续下一步。

img

5.4 选择需要同步的表

同步对象的设置,表级别同步,增量阶段冲突时覆盖,同步表结构和索引,限速和不限速等信息,针对我们新建的表test_t1需要选中,并同步到右边目标库中,这里DWS选中库realdb,同时制定schema名字为ry,用源表名,不做限速。

img

5.5 数据加工(可选)

数据表列的加工配置(可选,这里不做要求,直接下一步)

img

5.6 自动化预检查

预检查,进行同步任务预校验,校验是否可进行实时同步,如果有检查项不通过,需要根据检查结果提示信息,消除后重新校验,预检查必须通过才能满足进行下一步。

img

img

img

5.7 启动同步任务

DRS任务确认和启动,确认信息无误后可以稍后定时启动,也可以立即启动,我们选择立即启动,在弹出确认框勾选确认,立即启动。

img

img

img

5.8 观察任务状态

任务提交后,可以在实时同步管理页面,查看和管理刚才新建的同步任务,状态为“启动中”。

img

全量数据同步后,显示为“增量同步”,实时同步任务后续一直保持增量同步状态。

img

5.9 全量同步后观察数据实时同步情况

链接DWS目标库realdb,查看全量同步情况,schema、表结果和全量数据均以同步过来。

img

5.10 增量增删改后观察数据实时同步情况

在源数据库进行增删改,目标库实时同步到位。

源库:

img

目标库:

img

6. 总结

以上就是华为云数据复制服务(DRS)构建快速数据接入方案的介绍以及实操演示。

7. 参考文档

DWS菜鸟的私房菜の实时数据接入のDRS实时数据同步直通DWS: https://bbs.huaweicloud.com/blogs/288337

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。