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端,但是查看数据,发现外键并没有迁移过来
由于外键的主从表约束的特殊性,外键迁移需要进一步操作,即detach_replica过程,执行以下命令:
chameleon detach_replica --config default --source mysql
外键的创建和验证、重置序列(serial)将在detach_replica阶段进行。
注意:
datakit迁移的全量迁移是通过datakit安装部署portal,portal调用chameleon执行的。离线迁移是进行全量迁移,会将所有步骤(即包括外键的迁移)一次性执行完;而在线迁移是先进行全量迁移再进行增量迁移,为了防止增量迁移过程中有依赖外键的变更,所以在增量迁移停止以后再进行detach_replica步骤。
2、使用datakit的portal在线、离线迁移—外键
在datakit中实例管理和服务器管理中,添加实例mysql和openGauss,,以及要安装portal的服务器:
创建迁移任务
1、
2、
(1)离线迁移
3、
4、
5、
6、
7、
8、
9、
10、
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
外键已成功迁移
(2)在线迁移
------------------------------------------------------------------------------------------------------------------------------------------------------
点击详情,查看全量迁移已经结束,开始增量迁移,但此时,外迁迁移还没有启动:
若要迁移外键,需要手动停止增量迁移:
此时,外键迁移完成