??? > 哈喽!大家好,我是【】,江湖人称jeames007,10余年DBA及大数据工作经验 > 一位上进心十足的【大数据领域博主】!??? > 中国DBA联盟(ACDU)成员,目前服务于工业互联网 > 擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。 > 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【】??? > 感谢各位大可爱小可爱!#### 文章目录* * [?? 1.OceanBase4.2 集群](#?? 1.OceanBase4.2 集群) * * [? 1.1 集群状态](#? 1.1 集群状态) * [? 1.2 租户使用](#? 1.2 租户使用) * [?? 2.MySQL8](#?? 2.MySQL8) * * [? 2.1 安装部署](#? 2.1 安装部署) * [? 2.2 相关配置](#? 2.2 相关配置) * [? 2.3 压测sysbench部署](#? 2.3 压测sysbench部署) * [? 2.4 sysbench生成数据](#? 2.4 sysbench生成数据) * [?? 3.DataX](#?? 3.DataX) * * [? 3.1 下载安装](#? 3.1 下载安装) * [? 3.2 模板配置](#? 3.2 模板配置) * [?? 4.同步作业](#?? 4.同步作业) * * [? 4.1 同步表结构](#? 4.1 同步表结构) * [? 4.2 启动作业](#? 4.2 启动作业) * 5.报错 * 6.总结 本文详细介绍了从MySQL8.0版本向OceanBase4.2迁移数据的详细过程 ### ?? 1.OceanBase4.2 集群#### 1.1 集群状态> 1.启动 OceanBase 数据库 > root@centos79 \~# su - admin > admin@centos79 \~ obd cluster start obtest\> 2.查看集群状态 \> \[admin@centos79 \~\] obd cluster display obtest
#### 1.2 租户使用> 1.租户信息 > --使用 root 用户登录到集群的 sys 租户。 > admin@centos79 \~$ obclient -h192.168.3.20 -uroot@sys -P2883 -p'gxmxiv4fV6uKhJfgDktn' -A > --通过 DBA_OB_TENANTS 视图,查看所有的租户信息 > obclient (none)> select TENANT_ID,TENANT_NAME,PRIMARY_ZONE,COMPATIBLE,COMPATIBILITY_MODE from oceanbase.DBA_OB_TENANTS;> 2.使用租户 > --租户登陆 > obclient -uroot@mq_t1 -h127.1 -P2883 -p123456 -A > --创建数据库并指定字符集 > CREATE DATABASE testdb DEFAULT CHARACTER SET UTF8; > obclient (none)> use testdb### ?? 2.MySQL8#### 2.1 安装部署> 1 删除mariadb > 先查看一下是否已经安装了 > rpm -qa|grep mariadb > 删除mariadb > rpm -e --nodeps mariadb-libs> 2 RPM包下载 > yum install wget -y && wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar\> 3 解压缩 > tar -xvf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar> 4 安装 > yum -y install libstdc++* > yum -y install libaio > yum -y install perl perl-devel > yum -y install libncurses* > yum -y install autoconf > yum -y install numactl.x86_64> 安装 community-common > rpm -ivh --nodeps --force mysql-community-common-8.0.33-1.el7.x86_64.rpm > 安装 community-libs > rpm -ivh --nodeps --force mysql-community-libs-8.0.33-1.el7.x86_64.rpm > 安装 community-client > rpm -ivh --nodeps --force mysql-community-client-8.0.33-1.el7.x86_64.rpm > 安装 community-server > rpm -ivh --nodeps --force mysql-community-server-8.0.33-1.el7.x86_64.rpm> 5 初始化 > mysqld --initialize > chown mysql:mysql /var/lib/mysql -R > systemctl start mysqld > systemctl enable mysqld > systemctl status mysqld
#### 2.2 相关配置> --默认密码 > cat /var/log/mysqld.log | grep password |awk -F ": " '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 2}̲' > --修改密码 > A... mysqldump -h127.0.0.1 -P3306 -proot -uroot -t obtest --compact > mysql_data.sql> root@centos79 \~# chown admin:admin /root/mysql_ddl.sql > root@centos79 \~# chown admin:admin /root/mysql_data.sql > root@centos79 \~# cp mysql_d* /home/admin> 2.导入OceanBase > --租户登陆 > obclient -uroot@mq_t1 -h127.1 -P2883 -p123456 -A > -- 导入表结构 > MySQL (none)> use testdb > MySQL (none)> source /home/admin/mysql_ddl.sql > obclient testdb> show tables; > ±-----------------+ > | Tables_in_testdb | > ±-----------------+ > | course_tb | > | sbtest1 | > | sbtest10 | > | sbtest2 | > | sbtest3 | > | sbtest4 | > | sbtest5 | > | sbtest6 | > | sbtest7 | > | sbtest8 | > | sbtest9 | > ±-----------------+ > 11 rows in set (0.002 sec) > ... > -- 导入数据 > MySQL testdb> source /home/admin/mysql_ddl.sql#### 4.2 启动作业> --启动同步作业 > python2 /usr/local/datax/bin/datax.py /usr/local/datax/job/my2ob.json 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即可 ### 6.总结> 从MySQL向OceanBase迁移数据的基本方法:mysqldump、datax 、canal 等.本次基于datax迁移方便,便捷,文末列出的报错希望能给大家带来帮助。
基于DataX迁移MySQL到OceanBase集群
2601_962071572026-08-31 8:43
相关推荐
初願致夕霞20 分钟前
五种IO模型(详解非阻塞IO与多路转接)风哥2号33 分钟前
华为高斯数据库恢复工具FGOGDU(FGEDU openGauss DUL)小蒜学长41 分钟前
springboot党建云课堂学习与管理系统(代码+数据库+LW)2601_9621803341 分钟前
FlinkCDC 实现 MySQL 数据变更实时同步2601_962189601 小时前
深入浅出MySQL:概述与体系结构解析Gain_chance1 小时前
大数据毕业设计实战|Data Insight Platform:用 FastAPI + ClickHouse 打造低门槛全链路数据洞察平台harmony&2 小时前
ETCD 存储系统实战:从单节点部署到 Kubernetes 高可用集群2601_962066492 小时前
【玩转全栈】----Django模板的继承一只小bit3 小时前
Redis哨兵机制、主从复制与集群搭建与维护
#### 1.2 租户使用> 1.租户信息 > --使用 root 用户登录到集群的 sys 租户。 >
#### 2.2 相关配置> --默认密码 > cat /var/log/mysqld.log | grep password |awk -F ": " '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 2}̲' > --修改密码 > A... mysqldump -h127.0.0.1 -P3306 -proot -uroot -t obtest --compact > mysql_data.sql>
### 5.报错 1.DataX启动作业,无法连接MySQL如下报错 2024-03-16 13:02:59.505