尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

基于DataX迁移MySQL到OceanBase集群

基于DataX迁移MySQL到OceanBase集群 ??? 哈喽大家好我是【】江湖人称jeames00710余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】??? 中国DBA联盟(ACDU)成员目前服务于工业互联网 擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发备份恢复安装迁移性能优化、故障应急处理等。 如果有对【数据库】感兴趣的【小可爱】欢迎关注【】??? 感谢各位大可爱小可爱#### 文章目录* * ?? 1.OceanBase4.2 集群 * * ? 1.1 集群状态 * ? 1.2 租户使用 * ?? 2.MySQL8 * * ? 2.1 安装部署 * ? 2.2 相关配置 * ? 2.3 压测sysbench部署 * ? 2.4 sysbench生成数据 * ?? 3.DataX * * ? 3.1 下载安装 * ? 3.2 模板配置 * ?? 4.同步作业 * * ? 4.1 同步表结构 * ? 4.2 启动作业 * 5.报错 * 6.总结 本文详细介绍了从MySQL8.0版本向OceanBase4.2迁移数据的详细过程 ### ?? 1.OceanBase4.2 集群#### 1.1 集群状态 1.启动 OceanBase 数据库 [rootcentos79 ~]# su - admin [admincentos79 ~]$ obd cluster start obtest 2.查看集群状态 [admincentos79 ~]$ obd cluster display obtest#### 1.2 租户使用 1.租户信息 –使用 root 用户登录到集群的 sys 租户。 [admincentos79 ~]$ obclient -h192.168.3.20 -urootsys -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 -urootmq_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 : ‘{printKaTeX parse error: Expected EOF, got } at position 2: 2}̲’ –修改密码 A…mysqldump -h127.0.0.1 -P3306 -proot -uroot -t obtest --compact mysql_data.sql [rootcentos79 ~]# chown admin:admin /root/mysql_ddl.sql [rootcentos79 ~]# chown admin:admin /root/mysql_data.sql [rootcentos79 ~]# cp mysql_d* /home/admin 2.导入OceanBase –租户登陆 obclient -urootmq_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?useUnicodetruecharacterEncodingutf8useSSLfalse] 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迁移方便便捷文末列出的报错希望能给大家带来帮助。
返回列表