作者简介:王芝超,数据库DBA。
1 mysqldump 迁移
使用 mysqldump 将 mysql 的表结构和数据同步到 OceanBase 的 MySQL 租户中。
这个导出来的脚本有几个特征:
视图的定义也会在里面,但是会以注释 /!/。视图我们不关注,这部分内容可以删除。
会有一些特别的语法 OceanBase MYSQL 会不支持,但是不影响,需要替换掉其中部分。比如说变量 SQL_NOTES,DEFINER 语句等。
下面这个示例就是导出的脚本里有一个 MAX_ROWS= 的设置,这个是 MySQL 特有的,OceanBase MySQL 没有这个问题,也不需要这个设置,不支持这个语法,会报错。
注意:上面导出的 SQL 中表名是大写,说明源端 MySQL 里设置表名默认很可能是大小写敏感。因此目标 OceanBase MySQL 租户也要设置。
在导出的表结构语句里,可能包含外键。在导入 OceanBase MySQL 里时,如果外键依赖的表没有创建时,导入脚本会报错。因此导入之前需要将外键检查约束先禁用掉。
1.1 Mysql 端导出数据
mysqldump -uroot -pecology --set-gtid-purged=OFF -P3306 wang >./wang.sql
1.2 导入 OceanBase
用 obclient 通过 obproxy 登录集群导入数据库
obclient -uroot@tenant_wang#obcluster -h192.168.11.131 -P2883 -p -c -A
2 使用 datax 同步
使用 datax 配置至少一个表的 MySQL 到 OceanBase 的 MySQL 租户的离线同步
2.1 部署 datax 软件
下载 datax 软件,解压即可
wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
创建同步作业配置文件,生成模板文件
python ./datax/bin/datax.py -r mysqlreader -w oceanbasev10writer > ./datax/job/my2ob.json
删除 datax 中的隐藏文件
find ./datax/plugin -name ".*" | xargs rm -f
2.2 同步配置
修改模板文件
vi ./datax/job/wang.json { "job": { "setting": { "speed": { "channel": 2, }, "errorLimit": { "record": 10 } }, "content": [ { "reader": { "name": "mysqlreader", "parameter": { "username": "wang", "password": "wang", "column": [ "*" ], "connection": [ { "jdbcUrl": [ "jdbc:mysql://192.168.11.135:3306/wang" ], "table": [ "locations" ] } ] } }, "writer": { "name": "oceanbasev10writer", "parameter": { "writeMode": "insert", "username": "wang", "password": "wang", "writerThreadCount": 5, "column": [ "*" ], "connection": [ { "jdbcUrl": "||_dsc_ob10_dsc_||obcluster:tenant_wang||_dsc_ob10_dsc_||jdbc:mysql://192.168.11.131:2883/wang?useUnicode=true&characterEncoding=utf-8", "table": [ "locations" ] } ] } } } ] } }
2.3 开始同步
启动作业同步
python /mysql/oceanbase/datax/bin/datax.py /mysql/oceanbase/datax/job/two.json
检查同步情况
3 避坑指南
Unknown character set: 'utf8mb3'
OceanBase 的字符集为UTFBMB4
修改修改 mysqldump 的备份文件替换后即可重新导入
————————————————
附录:
练习题:
实践练习一(必选):OceanBase Docker 体验
实践练习二(必选):手动部署 OceanBase 集群
实践练习三(可选):使用OBD 部署一个 三副本OceanBase 集群
实践练习四(必选):迁移 MySQL 数据到 OceanBase 集群
实践练习五(可选):对 OceanBase 做性能测试
实践练习六(必选):查看 OceanBase 执行计划
还没交作业的小伙伴要抓紧啦!
可以免费带走 OBCP 考试券喔~~
方法一:完成四道必选练习
方法二:任意一道练习题 ➕ 结业考试超过80分
已经有很多同学抢先答题了,
加入钉钉群(群号3582 5151),和大家一起学习、交流~~
进群二维码: