文档首页/ 数据仓库服务 GaussDB(DWS)/ 最佳实践/ 数据迁移/ 使用DRS实时同步MySQL表数据至GaussDB(DWS)集群
更新时间:2024-10-10 GMT+08:00

使用DRS实时同步MySQL表数据至GaussDB(DWS)集群

本实践演示通过华为云数据复制服务(Data Replication Service,简称DRS)完成MySQL数据实时同步到GaussDB(DWS)的基本过程。了解DRS服务,请参见什么是数据复制服务

本实践预计时长60分钟,基本流程如下:

  1. 准备工作
  2. 步骤一:准备MySQL源表数据
  3. 步骤二:创建DWS集群
  4. 步骤三:创建DRS同步任务
  5. 步骤四:验证数据同步

场景描述

大数据分析场景下,MySQL作为OLTP数据库,接入GaussDB(DWS)数仓进行OLAP业务分析后,对于MySQL实时写入的数据也需要实时同步入仓,此时可通过DRS实现。

图1 DRS实时同步MySQL

准备工作

  • 已注册华为账号并开通华为云,且在使用GaussDB(DWS) 前检查账号状态,账号不能处于欠费或冻结状态。
  • 已准备待迁移的MySQL源表数据,本实验使用华为云数据库RDS的MySQL数据库作为源数据举例,如源数据为MySQL线下版本,请确保网络连通。

步骤一:准备MySQL源表数据

  1. 已购买云数据库RDS的MySQL引擎(本实践以MySQL 8.0.x为例),参见购买RDS实例
  2. 已创建源数据库rds_demo,字符集utf8mb4,且库中已存在表rds_t1和数据。

步骤二:创建DWS集群

  1. 创建集群,为确保网络连通,GaussDB(DWS) 集群与RDS在同一个区域下。
  2. 在GaussDB(DWS)控制台的“专属集群 > 集群列表”页面,单击指定集群所在行操作列“登录”按钮。

    本实践以8.1.3.x版本为例,8.1.2及以前版本不支持此登录方式,可以使用Data Studio连接集群

  3. 登录GaussDB(DWS)数据库后,创建待同步MySQL数据的数据库:rds_demo。

    1
    CREATE DATABASE rds_demo WITH ENCODING 'UTF-8' DBCOMPATIBILITY 'mysql' TEMPLATE template0;
    

  4. 切换到rds_demo数据库,创建名称为rds_demo的Schema。

    1
    CREATE SCHEMA rds_demo;
    

  5. 在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 '创建时间';
    

  6. 查询表数据,目前为空表。

    1
    SELECT * FROM rds_demo.rds_t1;
    

步骤三:创建DRS同步任务

  1. 选择“服务列表 > 数据库 > 数据复制服务 DRS”,切换至DRS控制台。

  2. 在左侧导航栏选择“实时同步管理”,单击右上角的“创建同步任务”。

  3. 填写基本参数,参见表1

    表1 基本参数

    参数名称

    取值

    计费模式

    按需计费

    区域

    中国-香港,确保RDS与DWS所选区域为同一个区域。

    项目

    中国-香港

    任务名称

    DRS-DWS

    描述

    -

  4. 继续填写以下参数,参见表2

    表2 同步实例信息

    参数名称

    取值

    数据流动方向

    入云

    源数据引擎

    MySQL

    目标数据库引擎

    GaussDB(DWS)

    网络类型

    本实践选择“VPC网络”,如果MySQL为线下版本,则需要选择“公网网络”。

    实例类型

    单机

    目标数据库实例

    选择步骤二:创建DWS集群的集群名称。

    同步实例所在子网

    选择DWS集群所在子网。本实践RDS、DWS都在同一个VPC和子网下。

    同步模式

    全量+增量。

    规格类型

    本实践选择“极小”,实际请按数据量和同步速率要求进行评估。

  5. 单击“下一步”,确认无误后单击“我已阅读并知晓”。

    等待实例同步,大约5~10分钟。

  6. 实例同步成功后,填写源库信息,单击“测试连接”,显示测试连接成功即可。

    表3 源库信息

    参数项

    取值

    数据库类型

    RDS实例

    数据库实例名称

    选择创建的RDS实例。

    数据库用户名

    root

    数据库密码

    ****

  7. 填写目标库信息,单击“测试连接”,显示测试连接成功即可。

    表4 目标库信息

    参数项

    取值

    数据库用户名

    dbadmin

    数据库密码

    ****

  8. 单击“下一步”,确认无误后单击“同意,并继续”。
  9. 设置同步策略,参见表5

    表5 同步策略

    参数项

    取值

    流速模式

    不限速

    同步对象类型

    同步数据

    增量阶段冲突策略

    覆盖

    数据同步拓扑

    一对一

    增量支持DDL

    默认值

    同步对象

    表级同步。

    从源数据库中勾选要同步的表,本实践为rds_demo下的rds_t1。

    并填写同步到DWS的数据库名:rds_demo

  10. 单击“下一步”,确认无误,再单击“下一步”。

    等待数据库参数检查成功,如果不成功,单击“重新校验”。

  11. 单击“下一步”,启动时间选择“立即启动”,其他信息核对无误,单击右下角“启动任务”。

  12. 弹出窗口确认无误后勾选“我已阅读启动前须知”,并单击“启动任务”。

    回到DRS的“实时同步管理”页面,等待约5~10分钟,启动成功。

    启动成功后,数据开始同步,等待约5分钟,继续执行步骤四:验证数据同步

步骤四:验证数据同步

  1. 回到GaussDB(DWS)管理控制台,重新登录DWS,执行以下语句再次查询表数据,显示结果如下图所示表示全量数据同步成功。

    1
    SELECT * FROM rds_demo.rds_t1;
    

  2. 切换到RDS管理控制台,登录RDS数据库,向表rds_t1插入新的数据。

    1
    INSERT INTO rds_t1 VALUES ('5','new_area_name_05',34,64,1003,'2022-11-04');
    

  3. 切回DWS数据库,执行以下语句查询表数据。

    查询结果中新增一条行数据,表示MySQL的更新数据已实时同步到GaussDB(DWS)。
    1
    SELECT * FROM rds_demo.rds_t1;