RDS for MySQL到GaussDB数据同步实验
该实验旨在指导用户使用DRS将RDS MySQL上的数据迁移到 GaussDB中。 本实验涉及数据复制服务DRS(Data Replication Service)、关系型数据库服务RDS(Relational Database Service)、GaussDB、数据管理服务DAS(Data Admin Service)、VPC(虚拟私有云)等华为云服务。
界面常用操作说明: 收起

全屏:点击全屏,实验手册和操作桌面进入全屏,再次点击退出全屏。
复制粘贴:作为媒介,支持从本地复制内容粘贴至云主机上,或者从云主机上复制内容到本地。双击或者选择左边手册内容也可以复制所选内容。
实验报告:可以查看实验步骤完成情况、实验问题列表、过程记录。
新手引导:查看更多功能区指引。
手册中代码复制,请点击命令框右上角拷贝代码按钮,鼠标挪到粘贴位置,右键粘贴

准备环境 收起
1. 预置环境
注意:开始实验之前请点击手册上方“预置实验环境”按钮。

预置实验环境约等待【2分钟】后预置成功。环境预置成功会创建好对应VPC,安全组和子网。
2. 登录云账户
进入【实验操作桌面】,打开Chrome浏览器,首次可自动登录并进入华为云控制台页面。
注意:如后续关闭浏览器重新登录或自动登录失败,可按如此步骤登录:选择【IAM用户登录】模式,于登录对话框中输入系统为您分配的华为云实验账号和密码登录华为云,如下图所示:

注意:账号信息详见实验手册上方,切勿使用您自己的华为云账号登录。

实验操作步骤 收起
1. 创建GaussDB 分布式实例(预计15-20分钟)
- 进入控制台,选择区域“华北-北京四”。在左侧图标栏,单击服务列表图标,选择云数据库GaussDB。

- 进入数据库购买界面,选择“购买数据库实例”。

- 配置数据库,主要参数如下,其余请保持默认设置。
● 计费模式 :按需计费
● 区域 :华北-北京四
● 实例名称 :gauss-hccdp,您可自定义
● 产品类型 :基础版
● 数据库引擎版本 :选择最新版即可
● 实例类型 :集中式
● 部署形态 :1主2备
● 可用区 :默认选择可用区一,可用区二,可用区三即可
● 性能规格 :通用型(1:4) 4vCPUs|16GB
● 虚拟私有云、内网安全组 :选择已预置的VPC(vpc-hccdp)及安全组(sg-hccdp)
● 管理员密码 :请按照页面要求设置,并自行保管
单击“立即购买”后,在确认页面提交订单。

提交完成后,回到实例界面,等待数据库创建。

等待10至20分钟后,数据库创建成功。等待过程中可以继续下面的操作。
2. 创建云数据库 RDS 实例 (预计8分钟)
- 在控制台中鼠标选择页面左侧菜单栏,点击“服务列表” > ”数据库” > “云数据库 RDS”。

- 点击“购买”, 然后点击“自定义购买” 进入参数填写界面配置相关参数:
● 计费模式 :按需计费
● 区域 :华北-北京四
● 数据库引擎 : MySQL
● 数据库版本 :5.7
● 实例类型 :单机
● 存储类型 :SSD 云盘
● 性能规格 :2 vCPUs | 4 GB (通用型)
注意:请确认所选类型为“通用型”。
● 实例名称 :rds-hccdp,您可自定义
● 设置密码 :点击“现在设置”,然后按照页面要求设置管理员密码,并自行保管
● 虚拟私有云、内网安全组 :选择已预置的VPC(vpc-hccdp)及安全组(sg-hccdp)
● 数据库端口 :默认(3306)
其他属性默认即可,点击“立即购买”,确认产品规格,单击“提交”。

- 约等待 5 分钟,待运行状态从“创建中”变为”备份中”,最终变为“正常”则为购买完成。

3. 设置安全组规则 (预计5分钟)
- RDS for MySQL数据库实例创建成功后,选中实例名称,单击。如下图:

- 进入实例基本信息界面后,点击左边的“连接管理”菜单,可滑动至“安全组规则”部分,点击安全组中的“安全组名称”,然后点击“添加入方向规则” 进入设置页面。如下图:

- 在添加入方向规则界面,对参数进行设置,其余保持默认。设置如下:
● 协议端口 :选择MYSQL(3306)

- 设置完成后,可以在界面上看到该规则,如下:

4. 在源端MySQL中构造数据(预计5分钟)
- RDS for MySQL数据库实例创建成功后,选择实例右侧的“登录”。如下图:

- 进入数据库管理服务DAS界面,在“实例登录”窗口中:
1)填写购买实例是所设的数据库root用户密码。
2)单击“测试连接”,确认有“连接成功”的提示返回。
3)勾选“记住密码”,打开“SQL执行记录”。

- 新增用户数据库finance。字符集保持默认。

- 单击“SQL查询”,进入查询界面。


- 执行以下代码,并执行SQL在数据库finance中创建两个表client和bank_card。
DROP TABLE IF EXISTS client;CREATE TABLE IF NOT EXISTS client (
c_id INT PRIMARY KEY AUTO_INCREMENT,
c_name VARCHAR ( 100 ) NOT NULL,
c_mail CHAR ( 30 ) UNIQUE,
c_id_card CHAR ( 20 ) UNIQUE NOT NULL,
c_phone CHAR ( 20 ) UNIQUE NOT NULL,
c_password CHAR ( 20 ) NOT NULL,
c_bit BIT DEFAULT NULL
);DROP TABLE IF EXISTS bank_card;CREATE TABLE bank_card ( b_number CHAR(30) PRIMARY KEY, b_type CHAR(20), b_c_id INT NOT NULL );

- 利用DAS的“数据方案”中“自动生成测试数据”在测试表中构造测试数据。

在“自动生成测试数据”页面中单击“新建任务”先构造client表中的数据。

在“新建测试数据生成任务”对话框中,目标表选择”client”,将c_mail、c_id_card、c_phone三个有唯一约束的字段需要修改生成方式,使其满足唯一性要求。
在左侧单击字段c_mail,在右侧“生成方式”区域将“生成类型”修改为“非重复字符串”,选项选为“系统随机”,同时勾选下方的“遇到数据冲突则替换”。
使用同样方法,设置c_id_card、c_phone的字段生成方式。

单击“生成数据”,在提示框中单击“是”。

测试数据生成后,单击“关闭”。

- 用相同的办法构造bank_card表的测试数据。
注意: b_number为主键,不允许重复,故需要修改生成类型为非重复字符串。同时勾选下方的“遇到数据冲突则替换”。

两张表的数据生成后,会在“自动生成测试数据”窗口中显示数据生成的详细信息。

- 检查测试数据是否已成功插入表中。
在“SQL查询”窗口中,依次执行如下语句,可以查询到预置数据100000条已成功插入表格中。
SELECT COUNT(*) FROM client;

SELECT COUNT(*) FROM bank_card;

5. 在GaussDB中创建目标数据库(预计2分钟)
5.1 登录GaussDB数据库
- 进入云数据库GaussDB控制台。确认1.1节所创建的GaussDB实例是否已创建成功。
实例状态显示“正常”即表示实例已创建成功。

- 单击实例右侧的“登录”。
1)在“实例登录”对话框中,输入购买服务时所设的root用户密码,并测试连接。确认可以连接成功。
2)勾选“记住密码”,打开“SQL执行记录”。

说明: postgres是GaussDB实例内置的系统库。
5.2 为目标GaussDB实例创建测试用数据库finance
- 单击“新建数据库”,数据库名称设为finance,DBCOMPATIBILITY设为MySQL。其他参数保持默认即可,然后单击“确定”。

6. 创建同步任务 (预计15-20分钟)
- 在控制台中,单击服务列表选择“数据库” > “数据复制服务 DRS”。

- 点击左边的“实时同步管理”菜单进入“实时同步管理”页面,单击右上角“创建同步任务”,进入同步实例页面。

- 在“同步实例信息”下,填选任务信息和同步实例信息参数:
● 计费模式 :按需计费
● 区域 :华北-北京四
● 任务名称 : DRS-hccdp,您可自定义
● 数据流动方向 :入云
● 源数据库引擎 :MySQL
● 目标数据库引擎 :GaussDB 主备版
● 网络类型 : VPC网络
● 目标数据库实例 :下拉选择搭建环境章节节创建的GaussDB实例
● 同步模式 :全量+增量

- 点击“开始创建”,在弹出的提示框中单击“我已阅读并同意”。
等待约4分钟待同步实例生成后会有实例对应的网络信息。


7. 填写源库及目标库信息
同步实例创建成功后,在“源库及目标库”下,填写源库信息和目标库信息。
源库信息:
● 源库类型 :RDS实例
● 数据库实例名称 :下拉选择步骤1.1.1购买的RDS实例
● 数据库用户名 :root
● 数据库密码 :请填写已设定的密码
● SSL安全连接 :不选择
点击“测试连接”,连接成功如下图:

注意: 同步实例创建成功大约需要花费4分钟,且必须创建成功才能点击“测试连接”。
目标库信息:
● 数据库实例名称 :默认
● 数据库用户名 :root
● 数据库密码 :请填写已设定的密码
同上点击“测试连接”,连接成功如图所示:

确定源库和目标库连通后,单击“下一步”并在提示框中单击“同意,并继续”进行确认。
8. 设置同步
● 全量同步对象类型 :勾选“同步表结构”及“同步索引”
MySQL侧选择了库和表,为什么在GaussDB侧还要选择一个已经预置的数据库,即MySQL的库位于GaussDB库的下面?
● 增量阶段冲突策略 :保持默认
● 同步对象 :表级同步
将在源端RDS构造的测试库展开,勾选上测试表,将测试表移动到右侧

输入1.4节在GaussDB实例创建测试database的名称finance

确认无误后,点击下一步,进入预检查。
9. 预检查
- 在“预检查”页面可以进行同步任务预检查,校验是否可以进行数据同步。
说明:在进行预检查前请选择跳过“用户参数检查:用户是否已创建服务委托”项。
- 如图所示,查看检查结果,待所有检查项结果均成功时,单击“下一步”。

说明:
-
如有不通过的检查项,需要修复后,单击“重新校验”按钮重新进行同步任务的预检查。 预检查不通过项处理建议请参见《数据复制服务用户指南》中的“预检查不通过项修复方法”。
-
所有检查项结果均成功时,若存在告警,需要阅读并确认告警详情后才可以继续执行下一步操作。
10. 任务确认
● 启动时间 :立即启动
● 任务异常通知设置 :不勾选
● 任务异常自动结束时间 :14
单击“启动任务”

在弹出的“启动前须知”,点击“启动任务”提交同步任务。同
步任务提交后,您可以返回“实时同步管理”页面,查看同步任务状态。
11. 同步源端增量数据
- 等待同步任务启动后,会经历全量同步和增量同步两个阶段,对于不同阶段的同步任务,您可以进行任务管理。

全量同步中的任务,您可单击任务名称,在 “同步进度”页签下,查看同步任务的进度。全量同步经过等待期后,进入同步过程。可以查看全量同步完成剩余时间,了解全量同步的进度。当全量同步进度显示为 100%,表示全量同步已经完成。

- 全量同步任务完成后,使用DAS登录源端RDS MySQL。
如果之前已经退出了DAS的RDS MySQL登录窗口,可以在控制台服务列表中选择“数据管理服务DAS”,进入数据管理服务DAS界面选择“进入开发工具”,单击实例右侧的“登录”,重新登录。


- 登录成功后,确认是否有“SQL查询”窗口处于打开中,如果有,请进入下一步。如果没有,请在上方菜单中选择“SQL操作>SQL查询”。

- 执行以下SQL,向bank_card表中插入新数据。
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000001’,‘信用卡’,1);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000002’,‘信用卡’,3);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000003’,‘信用卡’,5);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000004’,‘信用卡’,7);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000005’,‘信用卡’,9);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000006’,‘信用卡’,10);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000007’,‘信用卡’,12);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000008’,‘信用卡’,14);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000009’,‘信用卡’,16);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000010’,‘信用卡’,18);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000011’,‘储蓄卡’,19);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000012’,‘储蓄卡’,21);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000013’,‘储蓄卡’,7);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000014’,‘储蓄卡’,23);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000015’,‘储蓄卡’,24);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000016’,‘储蓄卡’,3);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000017’,‘储蓄卡’,26);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000018’,‘储蓄卡’,27);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000019’,‘储蓄卡’,12);
INSERT INTO bank_card(b_number,b_type,b_c_id) VALUES (‘6222021302020000020’,‘储蓄卡’,29);

- 执行如下SQL查询插入数据后表中的数据总条数。此时发现手动插入测试数据已经成功insert。
select count(*) from bank_card;

-
使用DAS登录目标端GaussDB实例。方法同本节步骤1。
-
在SQL查询窗口左上角库名选择“finance”,Schema选择“finance”。拷贝代码,并执行SQL
SELECT count(*) from bank_card;

SELECT * from bank_card where b_c_id=29;

可以看到,DRS将源端RDS MySQL的增量数据已经成功同步到目标端 。
- 打开桌面的xfce终端,使用gsql连接数据库。
在命令行依次输入下列语句:
tar -zxvf GaussDB-Kernel-V500R001C20-EULER-64bit-gsql.tar.gzsource gsql_env.sh
得到结果如下:

- 绑定弹性公网IP。
1)返回控制台页面,在左侧图标栏,单击服务列表图标,选择弹性公网IP。

2)点击“购买弹性公网IP”,参数填写界面配置相关参数:
● 计费方式 :按需计费
● 区域 :华北-北京四
● 线路 :全动态BGP(默认)
● 公网带宽 :按流量计费
● 带宽大小 :5(默认)
点击“立即购买”,确认信息无误后单击“提交”:

可以看到弹性公网IP购买成功:

回到GaussDB登录界面,点击左侧GaussDB实例名称,进入GaussDB实例,操作如下:

在基本信息页面,滑动到节点列表,找到主节点,并绑定弹性公网IP:

在弹出的“绑定弹性公网IP”窗口中,选择已创建的IP并单击“确定”。通过刷新可查看是否绑定成功,绑定成功后显示如下:

- 使用gsql语句连接数据库,并查看SQL检查增量数据是否已经同步成功。
gsql -h 【弹性公网IP,需自行编辑】 -d finance -p 8000 -U root -W 【已设置的密码】 -r
SELECT * from finance.bank_card where b_c_id=29;
至此,实验结束