迁移 MySQL 数据到 OceanBase 集群
2021/12/29 19:10:41
本文主要是介绍迁移 MySQL 数据到 OceanBase 集群,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
练习内容
请记录并分享下列内容:
- 1(必选)使用 mysqldump 将 mysql的表结构和数据同步到 OceanBase 的MySQL 租户中。
- 2(必选)使用 datax 配置至少一个表的 MySQL 到 OceanBase 的 MySQL 租户的离线同步。
1、基础环境
mysql 单机 192.168.237.137:22
OceanBase zone1 单副本 192.168.237.132
2、创建测试表
mysql> CREATE DATABASE IF NOT EXISTS RUNOOB DEFAULT CHARSET utf8 COLLATE utf8_general_ci; mysql> create table Student(Sno char(9) primary key,Sname char(20) not null,Ssex char(2),Sage smallint,Sdept char(20)); 添加student表数据 mysql>insert into Student(Sno,Sname,Ssex,Sage,Sdept)values('201215121','李勇','男','20','CS'); mysql>insert into Student(Sno,Sname,Ssex,Sage,Sdept)values('201215122','刘晨','女','19','CS'); mysql>insert into Student(Sno,Sname,Ssex,Sage,Sdept)values('201215123','王敏','女','18','MA'); mysql>insert into Student(Sno,Sname,Ssex,Sage,Sdept)values('201215125','张立','男','19','IS');
3、导出文档(练习必选1)
mysqldump -h 127.1 -uroot -P3306 -p -d mxdata > mx_ddl.sql
4、导入数据(个人建议不这么搞 ,错太多) 我是没办法,官方练习题。
MySQL [mxdata] > source mx_ddl.sql
这个导出来的脚本有几个特征:
- 视图的定义也会在里面,但是会以注释 /!/。视图我们不关注,这部分内容可以删除。
- 会有一些特别的语法 OceanBase MYSQL 会不支持,但是不影响,需要替换掉其中部分。比如说变量
SQL_NOTES
,DEFINER
语句等。
5、安装datax (重点pom.xml 如果编译不通过就去注释)
5.1,系统要求:
System Requirements
Linux
JDK(1.8以上,推荐1.8)
Python(推荐Python2.6.X)
Apache Maven 3.x (Compile DataX)
官方的要求,基本上可用。但建议:Linux使用CentOS 6.9,因为配套的Python版本即是2.6.6,只需要配置Maven就好。Maven的版本建议使用3.2.5。刚开始用的3.8.1报错太多…
5.2,下载DataX源码:
$ git clone git@github.com:alibaba/DataX.git
1
使用git下载源码的方式,参考别的文档。BTW: 外网不稳定访问,多试。
5.3,通过maven打包:
$ cd {DataX_source_code_home}
$ mvn -U clean package assembly:assembly -Dmaven.test.skip=true
3.1,一定要记得配置国内镜像,修改setting.xml
<mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>https://maven.aliyun.com/repository/central</url> </mirror>
5.2,常见错误(找不到依赖包)
[ERROR] Failed to execute goal on project hdfsreader: Could not resolve dependencies for project com.alibaba.datax:hdfsreader:jar:0.0.1-SNAPSHOT: Could not find artifact org.pentaho:pentaho-aggdesigner-algorithm:jar:5.1.5-jhyde in nexus-aliyun (https://maven.aliyun.com/repository/central) -> [Help 1]
从提示上看,是hdfsreader的包缺失,相应的hdfswriter也应该是不行的。因为我用不到这两个组件,于是在pom.xml中注释掉。
还有一个 oscarwriter,也用不到,也在pom.xml中注释掉。
[ERROR] Failed to execute goal on project oscarwriter: Could not resolve dependencies for project com.alibaba.datax:oscarwriter:jar:0.0.1-SNAPSHOT: Could not find artifact com.oscar:oscar:jar:7.0.8 at specified path /opt/DataX/oscarwriter/src/main/lib/oscarJDBC.jar -> [Help 1]
5.4、然后,编译成功。
[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 05:43 min [INFO] Finished at: 2021-05-28T00:42:50+08:00 [INFO] Final Memory: 305M/492M [INFO] ------------------------------------------------------------------------
5.5配置datax 连接mysql和ocneanbase端 json文件
{ "job": { "setting": { "speed": { "channel": 4 }, "errorLimit": { "record": 0, "percentage": 0.1 } }, "content": [ { "reader": { "name": "mysqlreader", "parameter": { "username": "datax", "password": "root123", "column": [ "*" ], "connection": [ { "table": [ "lcxtest1" ], "jdbcUrl": ["jdbc:mysql://192.168.32.130:3306/lcxtest?useUnicode=true&characterEncoding=utf8&useSSL=false"] } ] } }, "writer": { "name": "oceanbasev10writer", "parameter": { "obWriteMode": "insert", "column": [ "*" ], "preSql": [ "truncate table lcxtest1" ], "connection": [ { "jdbcUrl": "||_dsc_ob10_dsc_||obcluster:test_tenant||_dsc_ob10_dsc_||jdbc:oceanbase://192.168.32.111:2883/lcxtest?useLocalSessionState=true&allowBatch=true&allowMultiQueries=true&rewriteBatchedStatements=true", "table": [ "lcxtest1" ] } ], "username": "root", "password":"root123", "writerThreadCount":10, "batchSize": 1000, "memstoreThreshold": "0.9" } } } ] } }
注明:这里需要
mysql增加一个同步账号 datax 可自行更改
onceanbase 修改 租户 账号密码
启动datax 进行同步
./datax.py ../job/mysql2ob.json (自行命名)
这篇关于迁移 MySQL 数据到 OceanBase 集群的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南