1. 软件依赖
| 分类 | 组件 | 版本 |
|---|---|---|
| JDK | JDK | 11.0.20 |
| 数据库 | MySQL | 5.7.27 |
| 数据库 | openGuass | 5.0.0+ |
| 迁移平台 | DataKit | 5.1.0+ |
| 迁移插件 | Portal | 5.1.0+ |
2. 环境配置
2.1 JDK安装配置
要求安装JDK11
2.2 MySQL多实例安装及预制数据
2.2.1 下载MySQL5.7
2.2.2 创建实例
- 配置环境变量
vim /home/wxm/.bashrc
文件末尾新增配置
export MYSQL_PATH=/usr2/wxm/mysql/mysql-5.7.27-aarch64 export PATH=$MYSQL_PATH/bin:$PATH
:wq保存文件并退出,执行:
source /home/test/.bashrc
-
创建五个文件夹 对应5个MySQL实例,以下操作重复五次(或者使用mysqld_multi使用一个配置文件安装多个实例)

-
进入实例目录下,以mysql_3310为例,创建配置文件
cd mysql_3310 vi my.cnf
配置文件内容如下:(注意修改文件路径、端口号和server-id,并确认端口号是否空闲)
[mysqld] port=3310 datadir=/usr2/wxm/mysql/mysql_3310/datadir pid-file=/usr2/wxm/mysql/mysql_3310/mysql.pid socket=/usr2/wxm/mysql/mysql_3310/mysql.sock log_error=/usr2/wxm/mysql/mysql_3310/error.log server-id=3310 enforce_gtid_consistency=on gtid_mode=on binlog_format= ROW log_bin=mysql-bin binlog_row_image=FULL bind_address = 0.0.0.0
-
安装MySQL实例
mysqld --defaults-file=/usr2/wxm/mysql/mysql_3310/my.cnf --initialize --user=test --basedir=/usr2/wxm/mysql/mysql-5.7.27-aarch64 --datadir=/usr2/wxm/mysql/mysql_3310/datadir如果在安装过程中出现报错
./mysqld: error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file or directory
对应的解决方案为:
创建软链接
ln -s /opt/datakit/tools/mysql5.7/mysql-5.7.27-aarch64/extra/libatomic.so.1 /usr/lib64/libatomic.so.1注意该操作需在root下执行
-
启动MySQL
mysqld_safe --defaults-file=/usr2/wxm/mysql/mysql_3310/my.cnf --user=test & -
查看root用户临时密码
cat /usr2/wxm/mysql/mysql_3310/error.log | grep root@localhost -
登录MySQL
mysql -u root -p -S /usr2/wxm/mysql/mysql_3310/mysql.sock
输入第6步命令查出的密码即可登录数据库
设置root用户密码为“123456”
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');
-
预制数据
8.1 创建新的用户mysql_test,对应的密码为password123
CREATE USER mysql_test; SET PASSWORD FOR mysql_test=PASSWORD('password123'); GRANT ALL ON *.* TO 'mysql_test'; GRANT RELOAD ON *.* to 'mysql_test'; GRANT REPLICATION CLIENT ON *.* to 'mysql_test'; GRANT REPLICATION SLAVE ON *.* to 'mysql_test'; FLUSH PRIVILEGES;8.2 预制数据
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;
2.3 openGauss安装及预制数据
2.3.1 openGauss部署
在目标目录下提前下载openGauss的安装包openGauss-6.0.0-openEuler-64bit-all.tar.gz,直接解压并配置环境变量即可部署openGauss数据库。
cd /usr3/wxm mkdir opengauss tar -zxvf openGauss-6.0.0-openEuler-64bit-all.tar.gz -C opengauss cd opengauss tar -xf openGauss-6.0.0-openEuler-64bit.tar.bz2
配置用户环境变量
vi /home/wxm/.bashrc
文件末尾添加配置:
export GAUSSHOME=/usr3/wxm/opengauss export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH export PATH=$GAUSSHOME/bin:$PATH
:wq保存文件并退出,执行:
source /home/wxm/.bashrc
初始化数据库:
gs_initdb -D /usr3/wxm/opengauss/datanode/dn1 --nodename=single -w Sample@123
2.3.2 openGauss参数配置
设置配置文件pg_hba.conf相关参数
gs_guc set -D /usr3/wxm/opengauss/datanode/dn1 -h "host all all 0.0.0.0/0 sha256"
gs_guc set -D /usr3/wxm/opengauss/datanode/dn1 -h "host replication all 0.0.0.0/0 sha256"
设置配置文件postgresql.conf相关参数
gs_guc set -D /usr3/wxm/opengauss/datanode/dn1 -c "listen_addresses = '*'" gs_guc set -D /usr3/wxm/opengauss/datanode/dn1 -c "wal_level = logical" gs_guc set -D /usr3/wxm/opengauss/datanode/dn1 -c "port = 5433" # 可选 修改openGauss占用端口,默认为5432 gs_guc set -D /usr3/wxm/opengauss/datanode/dn1 -c "max_wal_senders=4" # 指定可以同时连接到主节点的最大备节点数量的参数,默认值为4,迁移任务数大于4时需要修改该参数,至少等于并行迁移任务数量 gs_guc set -D /usr3/wxm/opengauss/datanode/dn1 -c "max_connections = 4096" #openGauss的最大连接数,默认为200,多任务并行时需要改大该参数
2.3.3 启动openGauss
启动:
gs_ctl start -D /usr3/wxm/opengauss/datanode/dn1
连接:
gsql -d postgres -p 5433 -r
创建用户和数据库:
create user opengauss_test with password 'Sample@123';
grant all privileges to opengauss_test;
create database datakit; # datakit为datakit平台的底层数据库
create database target_db11 with dbcompatibility = 'b'; # 迁移目标库
create database target_db12 with dbcompatibility = 'b';
create database target_db13 with dbcompatibility = 'b';
create database target_db14 with dbcompatibility = 'b';
create database target_db15 with dbcompatibility = 'b';
大小写参数检查,MySQL端和opanGauss端的大小写参数需要一致
# 查询MySQL的大小写参数
show variables like 'low_case_table_names';
# 查询openGauss的大小写参数
show dolphin.lower_case_table_names;
# 不一致的情况下修改openGuass端参数
alter user {用户名} set dolphin.lower_case_table_names to 0;
\q退出gsql命令,使用初始用户连接b库,每个目标库都需要连接一次,加载dolphin插件,以target_db11为例
gsql -d target_db11 -p 5432 -r
2.4 DataKit安装
参考 https://gitee.com/duanguoqiang4/openGauss-workbench/wikis/datakit_install.sh
3. 执行迁移任务
3.1 添加实例管理
MySQL实例:对多个MySQL实例重复如下操作,选择数据库类型为MYSQL,输入正确的IP地址、端口号、用户名即密码后点击连通性测试,左下角显示可用点击确定,即可添加成功。

openGauss实例:选择数据库类型为OPENGAUSS,输入正确的IP地址、端口号、用户名即密码后点击连通性测试,左下角显示可用点击确定,即可添加成功。

3.2 添加服务器管理
1. 服务器管理用来安装portal执行机,执行迁移任务。(注意:必须勾选记住密码)

2. 添加迁移任务的执行用户,点击添加用户后,在弹框中输入执行用户及用户密码,点击确认即可。

3.3 添加迁移任务
1. 点击创建数据迁移任务

2. 分别选择源端和目的端的数据库,添加子任务,按需选择是否调整内核参数,点击下一步

3. 配置迁移过程的参数,使用默认参数直接点击下一步
4.使用执行用户为执行机安装迁移套件,点击开始安装,以离线安装为例

本地下载对应系统架构的portal版本,选择离线安装,选择安装目录,上传安装包,点击确定(注意使用执行用户做安装用户,并选择空闲端口)

安装成功参考如下,选择物理机IP,点击完成

迁移长时间运行可能导致java堆内存不足,设置kafka的jvm参数:
vi /usr3/wxm/datakit_task/portal/tools/debezium/confluent-5.5.1/bin/connect-standalone
# 将KAFKA_HEAP_OPTS的默认参数-Xms256M -Xmx2G改为-Xms25G -Xmx25G
:wq # 保存退出
3.4 执行迁移任务
-
步骤3.3完成后,页面上会出现迁移任务,点击启动即可执行迁移,多个迁移子任务开始执行





