增量迁移
功能介绍
增量迁移是指将mysql数据迁移期间(包括全量和增量迁移)产生的增量数据迁移至openGauss端。
原理简介
基于开源三方件mysql-binlog-connector-java解析mysql的binlog,并根据mysql主备并行复制的原理,对可并行的事务在openGauss端采用多线程进行并行回放,以实现MySQL到openGauss端的在线迁移。其中并行事务的判断规则为:如果所有正在回放的事务的最小sequence_number大于该事务的last_committed,那么该事务就可以并行执行。该方案可以严格保证事务的顺序和一致性。
特性优势
利用sysbench对mysql进行压测,在10张表30个线程并发情况下,针对IUD混合场景,在Kunpeng-920 2p openEuler机器上测试,整体在线迁移性能可达3w tps。
操作步骤
- 源码编译
执行如下命令在代码仓库下载源码。
git clone https://gitee.com/opengauss/openGauss-tools-onlineMigration-mysql.git
修改配置文件。配置文件的路径为openGauss-tools-onlineMigration-mysql/mysql2openGauss/config.yml。
配置文件示例如下:
#openGauss config
openGauss_conn:
host: "127.0.0.1"
port: "5432"
user: "opengauss"
password: "password123"
database: "postgres"
#mysql config
mysql_conn:
host: "127.0.0.1"
port: "3306"
user: "mysql"
password: "password123"
database: "mysql"
编译命令。
cd openGauss-tools-onlineMigration-mysql/mysql2openGauss/
mvn clean package
运行命令。
java -jar ./target/online-migration-mysql-3.1.0.jar
高性能运行命令。在Kunpeng-920 2p openEuler机器上执行如下命令。
numactl -C 0-31 -m 0 java -Xms15G -Xmx25G -jar ./target/online-migration-mysql-3.1.0.jar
- 二进制运行
通过如下链接下载压缩包并解压。
https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.1.0/tools/online-migration-mysql2openGauss-3.1.0.tar.gz
tar -zxvf online-migration-mysql2openGauss-3.1.0.tar.gz
修改配置文件。配置文件的路径为online-migration-mysql2openGauss-3.1.0/config.yml。
配置文件示例如下:
#openGauss config
openGauss_conn:
host: "127.0.0.1"
port: "5432"
user: "opengauss"
password: "password123"
database: "postgres"
#mysql config
mysql_conn:
host: "127.0.0.1"
port: "3306"
user: "mysql"
password: "password123"
database: "mysql"
运行命令。
cd online-migration-mysql2openGauss-3.1.0
java -jar ./online-migration-mysql-3.1.0.jar
高性能运行命令。在Kunpeng-920 2p openEuler机器上执行如下命令。
cd online-migration-mysql2openGauss-3.1.0
numactl -C 0-31 -m 0 java -Xms15G -Xmx25G -jar ./online-migration-mysql-3.1.0.jar
注意事项
- 当前支持MySQL IUD操作(insert、update、delete)产生的增量数据迁移至openGauss。
- 支持迁移openGauss数据库兼容的MySQL DDL语句,对于不兼容的DDL,迁移时会报错处理(openGauss在完善对DDL的兼容性)。
- 为保证事务的顺序和一致性,不支持skip_event, limit_table, skip_table等设置。
- MySQL需要5.7及以上版本。
- MySQL参数设置要求为:log_bin=ON, binlog_format=ROW, binlog_row_image=FULL, gtid_mode = ON。
- 先进行全量迁移,再进行增量迁移,全量迁移可基于chameleon工具完成。
- 增量迁移支持的数据类型:数值类型(int,tinyint,smallint,mediumint,bigint,float,double,decimal),字符类型(char,varchar,text),时间类型(date,time,datetime,timestamp,year),二进制类型(binary,varbinary,blob)。