1.工具准备
mysqldump 可以使用 mysql 自带的 mysqldump 。datax 需要下载并编译。编译 datax 需要 maven,使用 maven 需要 java 环境,所以。。。
1.1 安装 openjdk
yum install java-1.8.0-openjdk -y yum install java-1.8.0-openjdk-devel.x86_64 -y
1.2 部署 maven
从 Apache 官网下载:https://maven.apache.org/download.cgi
wget https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.zip --no-check-certificate mkdir /usr/local/maven unzip apache-maven-3.8.4-bin.zip -d /usr/local/maven ll /usr/local/maven

1.3 配置环境变量
vi .bash_profile # 新增下面几行 export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64 export JRE_HOME=$JAVA8_HOME/jre export MAVEN_HOME=/usr/local/maven export PATH=$PATH:$MAVEN_HOME/bin:$JAVA_HOME/bin source .bash_profile


1.4 配置 maven 镜像源为阿里镜像源
修改配置文件 settings.xml,文件在 /usr/local/maven/conf 中。
<mirror> <id>aliyun</id> <mirrorOf>central</mirrorOf> <name>aliyun-public</name> <url>https://maven.aliyun.com/repository/public/</url> </mirror> <mirror> <id>aliyun-spring</id> <mirrorOf>spring</mirrorOf> <name>aliyun-spring</name> <url>https://maven.aliyun.com/repository/spring</url> </mirror>
1.5 编译 DataX 可执行二进制文件
按以下步骤编译 DataX 可执行二进制文件:
运行以下命令,下载源代码。
git clone https://github.com/alibaba/DataX.git 速度慢的可以从gitee拉取,或者使用别人打包好的。 git clone https://gitee.com/yongfuxie/DataX.git
注释 DataX/pom.xml 文件中的以下内容,其他组件也可能遇到问题,遇到时从 pom文件删除即可
<module>oscarwriter</module> <module>mongodbreader</module> <module>mongodbwriter</module>
运行以下命令,使用 Maven 将 DataX 打包。
$ cd {DataX_source_code_home} $ mvn -U clean package assembly:assembly -Dmaven.test.skip=true

生成的文件在 target 目录下

tar zxvf datax.tar.gz mv datax /usr/local/ cd /usr/local/datax/

2. 使用 mysqldump 迁移数据
与 mysql 之间的迁移没什么不同,如果只迁移表结构,指定-d参数
-d, --no-data No row information.
现在全量迁移一个库:
mysqldump -h 127.0.0.1 -uroot -proot123 -d lcxtest > lcxtest_nodata.sql mysqldump -h 127.0.0.1 -uroot -proot123 lcxtest > lcxtest.sql


把文件传到 observer 的机器上,或者在本地连接 observer 集群:
mysql --no-defaults -h192.168.32.111 -uroot@test_tenant#obcluster -P2883 -proot13 -Dlcxtest
导入时会报错,因为有表用了 latin1 字符集,修改掉。
sed -i 's/CHARACTER\ SET\ latin1//g' lcxtest_nodata.sql mysql --no-defaults -h192.168.32.111 -uroot@test_tenant#obcluster -P2883 -proot13 -Dlcxtest source lcxtest_nodata.sql

仍然会有报错,影响不大,建表语句是正确的
看一下表已经创建出来了。

如果是连数据一起导入,操作相同。

看下数据:

数据迁移成功。
3. 使用 datax 迁移数据
mysql 创建 datax 用户,并赋予了 all,使用它来迁移数据。( mysql 版本5.7)
注意修改相关的配置
{
"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"
}
}
}
]
}
}
这里格式是 集群:租户

删除已经迁移的四张表

迁移之前需要在 ob 端创建相应的表结构。
source lcxtest_nodata.sql
启动 datax
./datax.py ../job/mysql2ob.json

表迁移成功。
第二张表使用同样的方式,修改配置文件中的表名字即可。
第三涨使用csv格式来导入到OceanBase。
{
"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": "txtfilewriter",
"parameter": {
"path": "/tmp/lcxtest3",
"fileName": "lcxtest3.csv",
"encoding": "UTF-8",
"writeMode": "truncate",
"dateFormat": "yyyy-MM-dd hh:mm:ss" ,
"nullFormat": "\\N" ,
"fileFormat": "csv" ,
"fieldDelimiter": ","
}
}
}
]
}
}
第三张表数据比较少,只有80条。

导入到 OceanBase
{
"job": {
"setting": {
"speed": {
"channel": 4
},
"errorLimit": {
"record": 0,
"percentage": 0.1
}
},
"content": [
{
"reader": {
"name": "txtfilereader",
"parameter": {
"path": ["/tmp/lcxtest3"],
"fileName": "lcxtest3.csv",
"encoding": "UTF-8",
"column": ["*"],
"dateFormat": "yyyy-MM-dd hh:mm:ss" ,
"nullFormat": "\\N" ,
"fieldDelimiter": ","
}
},
"writer": {
"name": "oceanbasev10writer",
"parameter": {
"obWriteMode": "insert",
"column": [
"*"
],
"preSql": [
"truncate table lcxtest3"
],
"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": [
"lcxtest3"
]
}
],
"username": "root",
"password":"root123",
"writerThreadCount":10,
"batchSize": 1000,
"memstoreThreshold": "0.9"
}
}
}
]
}
}
但如前后数据查询:

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




