使用DRS实时同步MySQL表数据至GaussDB(DWS)集群
本实践演示通过华为云数据复制服务(Data Replication Service,简称DRS)完成MySQL数据实时同步到GaussDB(DWS)的基本过程。了解DRS服务,请参见什么是数据复制服务。
本实践预计时长60分钟,基本流程如下:
场景描述
大数据分析场景下,MySQL作为OLTP数据库,接入GaussDB(DWS)数仓进行OLAP业务分析后,对于MySQL实时写入的数据也需要实时同步入仓,此时可通过DRS实现。
准备工作
- 已注册华为账号并开通华为云,且在使用GaussDB(DWS) 前检查账号状态,账号不能处于欠费或冻结状态。
- 已准备待迁移的MySQL源表数据,本实验使用华为云数据库RDS的MySQL数据库作为源数据举例,如源数据为MySQL线下版本,请确保网络连通。
步骤一:准备MySQL源表数据
- 已购买云数据库RDS的MySQL引擎(本实践以MySQL 8.0.x为例),参见购买RDS实例。
- 已创建源数据库rds_demo,字符集utf8mb4,且库中已存在表rds_t1和数据。
步骤二:创建DWS集群
- 创建集群,为确保网络连通,GaussDB(DWS) 集群与RDS在同一个区域下。
- 在GaussDB(DWS)控制台的“专属集群 > 集群列表”页面,单击指定集群所在行操作列“登录”按钮。
本实践以8.1.3.x版本为例,8.1.2及以前版本不支持此登录方式,可以使用Data Studio连接集群。
- 登录GaussDB(DWS)数据库后,创建待同步MySQL数据的数据库:rds_demo。
1
CREATE DATABASE rds_demo WITH ENCODING 'UTF-8' DBCOMPATIBILITY 'mysql' TEMPLATE template0;
- 切换到rds_demo数据库,创建名称为rds_demo的Schema。
1
CREATE SCHEMA rds_demo;
- 在rds_demo的Schema下创建表rds_t1。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
CREATE TABLE rds_demo.rds_t1 ( area_id varchar(256) NOT NULL, area_name varchar(256) DEFAULT NULL, lifecycle varchar(256) DEFAULT NULL, user_num int DEFAULT NULL, income bigint DEFAULT NULL, create_time timestamp DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (area_id) )distribute by hash(area_id); COMMENT on column rds_demo.rds_t1.area_id is '区域编码'; COMMENT on column rds_demo.rds_t1.area_name is '区域名称'; COMMENT on column rds_demo.rds_t1.lifecycle is '生命周期'; COMMENT on column rds_demo.rds_t1.user_num is '各个生命周期用户数'; COMMENT on column rds_demo.rds_t1.income is '区域总收入'; COMMENT on column rds_demo.rds_t1.create_time is '创建时间';
- 查询表数据,目前为空表。
1
SELECT * FROM rds_demo.rds_t1;
步骤三:创建DRS同步任务
- 选择“服务列表 > 数据库 > 数据复制服务 DRS”,切换至DRS控制台。
- 在左侧导航栏选择“实时同步管理”,单击右上角的“创建同步任务”。
- 填写基本参数,参见表1。
- 继续填写以下参数,参见表2。
表2 同步实例信息 参数名称
取值
数据流动方向
入云
源数据引擎
MySQL
目标数据库引擎
GaussDB(DWS)
网络类型
本实践选择“VPC网络”,如果MySQL为线下版本,则需要选择“公网网络”。
实例类型
单机
目标数据库实例
选择步骤二:创建DWS集群的集群名称。
同步实例所在子网
选择DWS集群所在子网。本实践RDS、DWS都在同一个VPC和子网下。
同步模式
全量+增量。
规格类型
本实践选择“极小”,实际请按数据量和同步速率要求进行评估。
- 单击“下一步”,确认无误后单击“我已阅读并知晓”。
等待实例同步,大约5~10分钟。
- 实例同步成功后,填写源库信息,单击“测试连接”,显示测试连接成功即可。
表3 源库信息 参数项
取值
数据库类型
RDS实例
数据库实例名称
选择创建的RDS实例。
数据库用户名
root
数据库密码
****
- 填写目标库信息,单击“测试连接”,显示测试连接成功即可。
表4 目标库信息 参数项
取值
数据库用户名
dbadmin
数据库密码
****
- 单击“下一步”,确认无误后单击“同意,并继续”。
- 设置同步策略,参见表5。
表5 同步策略 参数项
取值
流速模式
不限速
同步对象类型
同步数据
增量阶段冲突策略
覆盖
数据同步拓扑
一对一
增量支持DDL
默认值
同步对象
表级同步。
从源数据库中勾选要同步的表,本实践为rds_demo下的rds_t1。
并填写同步到DWS的数据库名:rds_demo
- 单击“下一步”,确认无误,再单击“下一步”。
等待数据库参数检查成功,如果不成功,单击“重新校验”。
- 单击“下一步”,启动时间选择“立即启动”,其他信息核对无误,单击右下角“启动任务”。
- 弹出窗口确认无误后勾选“我已阅读启动前须知”,并单击“启动任务”。
回到DRS的“实时同步管理”页面,等待约5~10分钟,启动成功。
启动成功后,数据开始同步,等待约5分钟,继续执行步骤四:验证数据同步。
步骤四:验证数据同步
- 回到GaussDB(DWS)管理控制台,重新登录DWS,执行以下语句再次查询表数据,显示结果如下图所示表示全量数据同步成功。
1
SELECT * FROM rds_demo.rds_t1;
- 切换到RDS管理控制台,登录RDS数据库,向表rds_t1插入新的数据。
1
INSERT INTO rds_t1 VALUES ('5','new_area_name_05',34,64,1003,'2022-11-04');
- 切回DWS数据库,执行以下语句查询表数据。
查询结果中新增一条行数据,表示MySQL的更新数据已实时同步到GaussDB(DWS)。
1
SELECT * FROM rds_demo.rds_t1;