一、目的
从 MySQL 向 OceanBase 迁移数据的基本方法:mysqldump、datax 。
二、环境
硬件:CPU:16C 内存:20G 硬盘1:/dev/mapper/vgdata-lvdata 硬盘2:/dev/mapper/vgredo-lvredo
操作系统:CentOS Linux release 7.9.2009 (Core)
Mysql数据库,有少量业务表和数据。
三、测试数据准备
3.1下载并安装tpcc
[root@ob opt]# wget http://imysql.com/wp-content/uploads/2014/09/tpcc-mysql-src.tgz
[root@ob opt]# gunziptpcc-mysql-src.tgz
[root@ob opt]# tar xf tpcc-mysql-src.tar
[root@ob opt]# cd tpcc-mysql/src
[root@ob src]#make
编译完成后会生成tpcc_load和tpcc_start命令,以供之后生成测试数据。
3.2创建数据库,执行建表脚本
登录mysql并创建数据库:tpcc_test
mysql>create database tpcc_test;
生成测试表
mysql>source /opt/tpcc-mysql/create_table.sql
tpcc共创建了九张表:
customer:客户表;
district:地区表;
history:历史数据表;
item:商品表;
new_orders:新订单表;
order_line:发货表;
orders:订单表;
stock:库存表;
warehouse:仓库表;
3.3加载测试数据
[root@ob tpcc-mysql]# ./tpcc_load localhost tpcc_test root ‘Ant@cloud2022' 10
查看测试业务库数据表
四、使用mysqldump迁移数据
4.1使用mysqldump导出业务表结构
[root@ob opt]#mysqldump -h127.0.0.1 -uroot -P3306 -pAnt@cloud2022 -d tpcc_test --compact >
tpcc_ddl.sql
4.2使用mysqldump导出业务表数据
[root@ob opt]#mysqldump -h127.0.0.1 -uroot -P3306 -pAnt@cloud2022 -t tpcc_test --compact >
tpcc_data.sql
4.3导入业务表结构
MySQL [tpcc_test]> source /opt/tpcc_ddl.sql
MySQL [tpcc_test]> source /opt/tpcc_data.sql
4.4两端数据量核对
五、使用datax迁移数据
5.1安装部署datax
下载链接:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
[root@master datax]# wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
解压安装包:
[root@master datax]# tar xvzf datax.tar.gz
删除datax中的隐藏文件:
[root@master plugin]# find /datax/datax/plugin -name ".*" |xargs rm -rf
5.2生成模板文件:
[root@ob bin]#python /datax/datax/bin/datax.py -r
mysqlreader -w oceanbasev10writer > /datax/datax/job/mysql2ob.json
5.3修改模板文件:
[root@ob job]# vim mysql2ob.json
{
"job": {
"setting": {
"speed": {
"channel": 4
},
"errorLimit": {
"record": 0,
"percentage": 0.1
}
},
"content": [
{
"reader": {
"name":
"mysqlreader",
"parameter": {
"username":
"root",
"password":
"antcloud2022",
"column": [
"*"
],
"connection":
[
{
"table": [
"Student"
],
"jdbcUrl":
["jdbc:mysql://172.200.60.200:3306/Student_001?useUnicode=true&characterEncoding=utf8"]
}
]
}
},
"writer": {
"name":
"oceanbasev10writer",
"parameter": {
"obWriteMode": "insert",
"column": [
"*"
],
"preSql": [
"truncate
table Student"
],
"connection":
[
{
"jdbcUrl":
"jdbc:oceanbase://172.200.60.200:2883/Student_001?useLocalSessionState=true&allowBatch=true&allowMultiQueries=true&rewriteBatchedStatements=true",
"table": [
"Student"
]
}
],
"username":
"root@dev#obdemo",
"password":"AAaa@@123",
"writerThreadCount":10,
"batchSize":
1000,
"memstoreThreshold": "0.9"
}
}
}
]
}
5.4执行数据同步:
[root@ob datax]#bin/datax.py /datax/datax/job/mysql2ob.json
5.5两端数据核对
确认两端数据同步一致,没有出现异常,迁移完成。