暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

mysql-openGauss数据迁移以及外键迁移注意事项--chameleon和datakit

原创 ZhaoChen0409 2024-11-04
187

mysql端数据

create database zc_db; use zc_db; create table st_info5(st_id int(10) primary key auto_increment,name varchar(20) not null,class varchar(10),gender varchar(4),age int(2)); insert into st_info5(name,class,gender,age) values('王思瑶','管理1班','女',18),('王绮梦','管理1班','女',18),('李若彤','管理1班','男',18); create table tb_1(course_id int(8) primary key not null auto_increment,course_name varchar(25) not null,constraint course_Choosing foreign key fk_course(course_id) references st_info5(st_id))auto_increment=20015001; insert into tb_1 values(1,'地理'),(2,'高数'),(3,'物理');

1、手动使用chameleon全量迁移

创建chameleon配置文件目录:

chameleon set_configuration_files

执行该命令后,将在 ~/.pg_chameleon/configuration 目录下创建默认的配置文件模板。然后复制一份作为实际的配置文件。

cd ~/.pg_chameleon/configuration cp config-example.yml default.yml

开始使用工具做迁移过程。先初始化复制流。

chameleon create_replica_schema --config default chameleon add_source --config default --source mysql

此步骤将在openGauss侧创建用于复制过程的辅助schema和表

接下来开始复制基础数据。

chameleon init_replica --config default --source mysql

到此,mysql端的基础数据已经迁移到了opengauss端,但是查看数据,发现外键并没有迁移过来

image20240827185906754.pngimage-20240827185906754

由于外键的主从表约束的特殊性,外键迁移需要进一步操作,即detach_replica过程,执行以下命令:

chameleon detach_replica --config default --source mysql

外键的创建和验证、重置序列(serial)将在detach_replica阶段进行

微信截图_20240827211222.png

注意:

datakit迁移的全量迁移是通过datakit安装部署portal,portal调用chameleon执行的。离线迁移是进行全量迁移,会将所有步骤(即包括外键的迁移)一次性执行完;而在线迁移是先进行全量迁移再进行增量迁移,为了防止增量迁移过程中有依赖外键的变更,所以在增量迁移停止以后再进行detach_replica步骤。

2、使用datakit的portal在线、离线迁移—外键

在datakit中实例管理和服务器管理中,添加实例mysql和openGauss,,以及要安装portal的服务器:

image20240827195829550.pngimage-20240827195829550

微信截图_20240827200337.png

微信截图_20240827201736.png微信截图_20240827201736

创建迁移任务

1、

image20240827200634818.pngimage-20240827200634818

2、

微信截图_20240827200903.png微信截图_20240827200903

(1)离线迁移

3、微信截图_20240827201037.png微信截图_20240827201037

4、

微信截图_20240827201232.png微信截图_20240827201232

5、

微信截图_20240827202301.png

6、

微信截图_20240827203200.png微信截图_20240827203200

7、

微信截图_20240827203444.png微信截图_20240827203444

8、

微信截图_20240827203851.png微信截图_20240827203851

9、

微信截图_20240827204027.png微信截图_20240827204027

10、

微信截图_20240827204115.png微信截图_20240827204115

微信截图_20240827204127.png微信截图_20240827204127

openGauss端查看数据迁移是否完整:

# 登录openGauss [gsql -d postgres -p 端口号 -r] gsql -d postgres -p 15100 -r #切换到迁移的数据库 [\c 数据库名] \c zc_db #切换到迁移数据库的模式[set current_schema to 数据库名] set current_schema to zc_db; #\d 查看表列表 \d #查看某个表的详情,如下图所示,外键以成功迁移 [\d 表名] \d tb_1

微信截图_20240827204522.png微信截图_20240827204522

外键已成功迁移

(2)在线迁移

微信截图_20240827204955.png微信截图_20240827204955

微信截图_20240827205929.png微信截图_20240827205929

微信截图_20240827210052.png微信截图_20240827210052



微信截图_20240827210108.png微信截图_20240827210108




微信截图_20240827210124.png微信截图_20240827210124------------------------------------------------------------------------------------------------------------------------------------------------------

微信截图_20240827210139.png
微信截图_20240827210139

点击详情,查看全量迁移已经结束,开始增量迁移,但此时,外迁迁移还没有启动:

微信截图_20240827210607.png微信截图_20240827210607

若要迁移外键,需要手动停止增量迁移:

微信截图_20240827210723.png

此时,外键迁移完成

微信截图_20240827211131.png

微信截图_20240827211037.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论