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

网友投稿 678 2022-05-29

目 录

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、库、用户名和密码, 需 同步的表。 示例 :

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

以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 增量增删改后观察数据 实时 同步情况

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

源库:

目标库 :

完 !

EI企业智能 Gauss AP 数据仓库服务 GaussDB(DWS) 数据复制服务 DRS 数据库

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:学习云计算基础总结
下一篇:Docker+Jenkins+GIT+Tomcat实战持续化集成
相关文章