DWS菜鸟的私房菜の实时数据接入のDRS实时数据同步直通DWS

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

目 录

1 背景介绍

2 原理介绍

3 前提条件

3.1 源端: 

3.2 目标端: 

4 DRS 实时业务全量 + 增量同步

4.1 创建实时同步任务

4.2 选择同步链路

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

4.4 选择需要同步的表

4.5 数据加工(可选)

4.6 自动化预检查 

4.7 启动同步任务

4.8 观察任务状态

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

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


1 背景介绍 

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

2 原理介绍

       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字符。

目标数据库要求

• 目标数据库实例的运行状态必须正常。

• 目标数据库实例必须有足够的磁盘空间。

• 目标数据库的时区设置必须与源数据库一致。

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

3 前提条件 

3.1 源端

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

以mysql 5云上实例为例 , IP为 : 192.168.0.33 , 端口 :8 000 ,

用户名 : root , 密码 : xxxxxx

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

3.2 目标端

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

这里已DWS 8.1.0云上实例为例 , IP为 :192.168.0.225, 端口 :8000 ,

用户名 :dbadmin, 密码 : xxxxxx

4 DRS 实时业务全量 + 增量 同步

4.1 创建实时同步任务

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

4.2 选择同步链路

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

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

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

4.4 选择需要同步的表

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


4.5 数据加工 (可选)

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

4.6 自动化预检查

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

4.7 启动同步任务

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

4.8 观察任务状态

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

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

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

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

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

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

源库:

目标库 :

完 !

论坛.png



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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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