鲲鹏社区首页
中文
注册
如何通过Datakit工具完成MySQL到openGauss的数据迁移

如何通过Datakit工具完成MySQL到openGauss的数据迁移

openGauss

发表于 2023/12/11

0

MySQL迁移

1.  前置操作

(1)实例管理中创建数据源

MySQL和openGauss数据库启动后可在datakit平台--资源中心--实例管理中创建对应的数据源。

创建MySQL数据源:

此处可添加“启停命令总结”小节创建好的MySQL用户和密码

ip为实际ip

port为默认端口3306

用户名:mysql_test

密码:password123


创建openGauss数据源:

此处可添加“启动数据库”小节创建好的openGauss用户和密码。

ip为实际ip

port为默认端口5432

用户名:opengauss_test

密码:Sample@123

创建完成后DataKit平台界面会显示对应的数据源:

(2) DataKit服务器管理中添加服务器

在datakit平台--资源中心--服务器管理中添加对应的服务器,被管理的机器才可用于安装迁移插件,本次实验用本机作为迁移插件的执行机。

请注意这里密码为root用户的密码,并需要勾选记住密码,否则将不能用作迁移插件的执行机。

服务器添加完成后DataKit平台会显示对应的服务器信息:

在用户管理界面添加个人用户test。


用户添加完成后会显示在用户列表中显示已添加的用户。

(3)MySQL端预置数据

连接MySQL,并执行如下SQL语句:

mysql -h xx.xx.xx.xx -P 3306 -u mysql_test -ppassword123 -S/opt/datakit/tools/mysql5.7/mysql.sock

其中-h指定的参数 xx.xx.xx.xx需修改为实际ip。

本次实验中给MySQL端预制一些数据,主要包括表、数据、索引。

drop database if exists source_db;create database source_db;use source_db;create table table1(id int, name varchar(10), col varchar(20), primary key(id));insert into table1 values(1,'data', 'data1');insert into table1 values(2,'data', 'data2');insert into table1 values(3,'data', 'data3');insert into table1 values(4,'data', 'data4');insert into table1 values(5,'data', 'data5');insert into table1 values(6,'data', 'data6');create view view1 as select * from table1;create function mysql_func1(s char(20)) returns char(50) deterministic return concat('mysql_func1, ',s,'!');create trigger trigger1 before insert on table1 for each row set new.col = concat(new.name, new.id);create procedure procedure1() select * from table1;

迁移过程

MySQL迁移全流程包括全量迁移、全量校验、增量迁移、增量校验和反向迁移五个阶段,下面将详细介绍迁移全流程。

1. 创建迁移任务

在Datakit平台数据迁移--迁移任务中心--创建迁移任务,选定源端数据库(source_db)和目的端数据库(target_db),添加子任务,迁移过程模式选择在线模式。

迁移模式包括离线和在线两种模式,其中离线模式包括全量迁移和全量校验两个阶段,在线模式包括全量迁移、全量校验、增量迁移、增量校验、反向迁移和五个阶段,本次实践选择在线模式,囊括业务割接的整个过程。

详细描述如下:

(1)在Datakit平台数据迁移--迁移任务中心--创建迁移任务

(2)选定源端数据库(source_db)和目的端数据库(target_db),添加子任务,迁移过程模式选择在线模式

(3)编辑配置参数

可直接使用默认参数,无需修改,或者根据实际自定义。

2. 安装迁移插件

首次创建迁移任务时,需安装迁移插件,针对服务器管理中添加的服务器,选择开始安装即可。

若无对应的物理机,请记得将要安装插件的机器添加至服务器管理中,并添加。

插件安装分为离线安装、在线安装和导入安装三种方式,本次实验推荐离线安装方式,需提前下载好安装包,并上传对应的安装包即可。

针对不同操作系统的迁移插件安装包可从如下链接获取:

https://gitee.com/opengauss/openGauss-migration-portal/tree/5.1.0/#%E5%AE%89%E8%A3%85%E5%8C%85%E5%AE%89%E8%A3%85

(1)在线安装,指定安装用户(“前置操作”小节中服务器管理中管理的机器添加的个人用户)和安装目录。

(2)离线安装,指定安装用户(“前置操作”小节中服务器管理中管理的机器添加的个人用户)和安装目录,并上传安装包。


(3)导入安装,指定安装用户(3.1.1节中服务器管理中管理的机器添加的个人用户)和安装目录。



3. 启动迁移任务

对于在线模式的迁移任务,任务启动后,会首先进入全量迁移阶段,将3.1.1小节MySQL端预置的数据迁移至目标库,全量迁移结束后会进入全量校验阶段,会输出每个表的校验结果;之后进入增量迁移阶段,增量迁移阶段会同步执行增量校验。详情界面可以看到迁移过程状态信息。

详细描述如下:

(1)启动迁移任务

详情界面可以看到详细的迁移过程状态信息。

(2)首先进行全量迁移

全量迁移会将表、数据、视图、函数、触发器、存储过程迁移至openGauss数据库,全量迁移结束后,可在openGauss端验证数据及对象是否成功迁移。

图示为全量迁移完成:

openGauss验证结果:

连接数据库,切换至MySQL库同名的schema下,查看表、数据、视图、函数、存储过程、触发器是否正常迁移。

下图示显示全量迁移正常。


(3)全量迁移完成后进行全量校验

全量校验输出每个表的校验结果。

(4)全量校验完成后进行增量迁移

增量迁移会将增量的数据(增删改)和DDL迁移至openGauss数据库,与增量迁移并行执行的还有增量校验。

增量迁移进行增删改操作。

a. 插入操作

MySQL增量迁移过程中插入一条数据:

insert into table1(id,name) values(7,'data');

迁移工具进度信息提示已迁移一条数据。

openGauss端数据正常同步。


b. 修改操作

MySQL增量迁移过程中修改一条数据:

update table1 set name = 'new_data' where id = 6;


迁移工具进度信息提示累计已迁移两条数据。


openGauss端数据同步正常:

c. 删除操作

MySQL增量迁移过程中删除一条数据:

delete from table1 where id = 5;

迁移工具进度信息提示累计已迁移三条数据

openGauss端数据同步正常。

d. DDL操作

MySQL增量迁移过程中执行一条DDL:

create table table2(id int, name varchar(10));

迁移工具进度信息提示累计已迁移四条数据。

openGauss端数据同步正常。

上述提供一些增量迁移的示例,模拟业务增量数据迁移。

4. 业务割接

等增量数据全部迁移完成后,可进行业务割接。停止增量迁移,并启动反向迁移,修改应用程序的配置文件,启动应用程序,用openGauss承载业务。

在openGauss端进行增删改操作,验证MySQL端数据是否同步修改。

详细描述如下:

(1)增量数据追平后可进行业务割接

当剩余待写入数据为0条,表示增量数据已追平,可进行业务割接。

(2)停止增量迁移

(3)启动反向迁移

openGauss端进行数据增删改,模拟业务数据,验证业务数据可反向同步至MySQL端。

a. 插入操作

openGauss端插入一条数据:

insert into table1 values(8,'data');

迁移工具进度信息提示已迁移一条数据。


MySQL端数据同步成功。

b. 修改操作

openGauss端进行修改操作:

update table1 set name = 'name' where id = 1;

迁移工具显示已迁移两条数据。


MySQL端数据同步正常。


c. 删除操作

openGauss端删除一条数据:

delete from table1 where id = 3;

迁移工具显示已迁移三条数据。


MySQL端数据同步正常。

上述提供一些反向迁移示例,模拟业务数据反向迁移。

(4)停止反向迁移

反向迁移将数据从openGauss实时迁移至MySQL数据库,可保证源端数据库与目标数据库实时一致。作为一种数据逃生的通道,当目标数据库出现问题时,可及时将应用切回至源端数据库。

当业务平稳运行一段时间后,可停止反向迁移。

至此,已演示业务搬迁的全流程。

MySQL迁移工具总结

MySQL迁移全流程包括全量迁移、全量校验、增量迁移、增量校验和反向迁移五个阶段,每个阶段都由单独的工具完成。迁移portal集成了所有的迁移和校验工具,实现工具的安装、启停、维护等能力,并实现了迁移任务的编排;DataKit平台集成迁移portal,提供UI界面,实现迁移全流程可视化,实现全场景“简单、完整、高效”的迁移。

迁移工具

工具简称

代码仓

说明

全量迁移

gs_mysync

https://gitee.com/opengauss/openGauss-tools-chameleon

单个工具

增量迁移

gs_replicate

https://gitee.com/opengauss/debezium

单个工具

反向迁移

gs_replicate

https://gitee.com/opengauss/debezium

单个工具

数据校验

gs_datacheck

https://gitee.com/opengauss/openGauss-tools-datachecker-performance

单个工具

迁移portal

gs_rep_portal

https://gitee.com/opengauss/openGauss-migration-portal

集成所有迁移和校验工具

迁移平台datakit

datakit

https://gitee.com/opengauss/openGauss-workbench

集成迁移portal,提供UI界面

本页内容