文章目录
本文详细介绍了从MySQL8.0版本向OceanBase4.2迁移数据的详细过程
📣 1.OceanBase4.2 集群
✨ 1.1 集群状态
✨ 1.2 租户使用
📣 2.MySQL8
✨ 2.1 安装部署
✨ 2.2 相关配置
✨ 2.3 压测sysbench部署
✨ 2.4 sysbench生成数据
1.登陆MySQL
[root@centos79 ~]# mysql -uroot -p -h192.168.3.20
mysql> create database obtest;
2.sysbench写数据
[root@centos79 ~]# sysbench /usr/share/sysbench/oltp_common.lua \
--time=300 --mysql-host=192.168.3.20 --mysql-port=3306 --mysql-user=root \
--mysql-password=root --mysql-db=obtest --table-size=100000 --tables=10 \
--threads=16 --events=999999999 prepare
3.确认数据
[root@centos79 ~]# mysql -uroot -p -h192.168.3.20
mysql> use obtest;
mysql> show tables;
+------------------+
| Tables_in_obtest |
+------------------+
| sbtest1 |
| sbtest10 |
| sbtest2 |
| sbtest3 |
| sbtest4 |
| sbtest5 |
| sbtest6 |
| sbtest7 |
| sbtest8 |
| sbtest9 |
+------------------+
10 rows in set (0.01 sec)
mysql> select count(*) from sbtest1;
+----------+
| count(*) |
+----------+
| 100000 |
+----------+
📣 3.DataX
✨ 3.1 下载安装
✨ 3.2 模板配置
# 根据实际环境修改
vi /usr/local/datax/job/my2ob.json
cat > /usr/local/datax/job/my2ob.json <<"EOF"
{
"job": {
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"column": ["*"],
"connection": [
{
"jdbcUrl": ["jdbc:mysql://192.168.3.20:3306/obtest"],
"table": ["sbtest1"]
}
],
"password": "root",
"username": "root",
"where": ""
}
},
"writer": {
"name": "oceanbasev10writer",
"parameter": {
"column": ["*"],
"connection": [
{
"jdbcUrl": "||_dsc_ob10_dsc_||obcluster:mq_t1||_dsc_ob10_dsc_||jdbc:oceanbase://192.168.3.20:2883/testdb",
"table": ["sbtest1"]
}
],
"obWriteMode": "insert",
"password": "123456",
"username": "root"
}
}
}
],
"setting": {
"speed": {
"channel": "1"
}
}
}
}
EOF
📣 4.同步作业
✨ 4.1 同步表结构
✨ 4.2 启动作业
2023-03-15 17:12:11.358 [job-0] INFO JobContainer - PerfTrace not enable!
2023-03-15 17:12:11.359 [job-0] INFO StandAloneJobContainerCommunicator - Total 100000 records, 18788895 bytes | Speed 1.79MB/s, 10000 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 3.153s | All Task WaitReaderTime 0.719s | Percentage 100.00%
2023-03-15 17:12:11.360 [job-0] INFO JobContainer -
任务启动时刻 : 2023-03-15 17:12:11
任务结束时刻 : 2023-03-15 17:13:18
任务总计耗时 : 11s
任务平均流量 : 1.79MB/s
记录写入速度 : 10000rec/s
读出记录总数 : 100000
读写失败总数 : 0
5.报错
1.DataX启动作业,无法连接MySQL如下报错
2024-03-16 13:02:59.505 [job-0] WARN DBUtil - test connection of [jdbc:mysql://192.168.3.20:3306/obtest?useUnicode=true&characterEncoding=utf8&useSSL=false] failed, for Code:[DBUtilErrorCode-10], Description:[连接数据库失败. 请检查您的 账号、密码、数据库名称、IP、Port或者向 DBA 寻求帮助(注意网络环境).]. - 具体错误信息为:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server..
这个在确定数据库连接没有问题的情况下,
应该是数据库驱动版本的问题
确定一下使用的数据库的版本是不是mysql8及其以上,
如果是,需要在/datax/lib下加入一个mysql8版本的驱动jar包
2.OceanBase4.2导入表结构报错
ERROR 1273 (HY000): Unknown collation: 'utf8mb4_0900_ai_ci'
是因为linux下MySQL版本不兼容导致的
把文件中的所有的utf8mb4_0900_ai_ci替换为utf8mb4_general_ci
以及utf8mb4替换为utf8
obclient [testdb]> SELECT COLLATION("oceanbase");
+------------------------+
| COLLATION("oceanbase") |
+------------------------+
| utf8mb4_general_ci |
+------------------------+
1 row in set (0.001 sec)
3.DataX运行时报错
运行时出错, 具体原因请参看DataX运行结束时的错误诊断信息 .]. - java.lang.NumberFormatException: multiple points
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1914)
根DataX版本有关,下载最新的DataX即可