基于DataX迁移MySQL到OceanBase集群

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

    • 📣 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 数据库
[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 $2}’
–修改密码
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘root’;
–设置远程
create user ‘root’@‘%’ identified with mysql_native_password by ‘root’;
grant all privileges on . to ‘root’@‘%’ with grant option;
flush privileges;

✨ 2.3 压测sysbench部署

sysbench是一款开源的多线程性能测试工具,
可以执行CPU/内存/线程/IO/数据库等方面的性能测试
sysbench能做什么
新业务上线的时候通常需要对数据库性能进行压力测试,以确认是否满足需要,今天简单介绍下sysbench的用法:
1.sysbench 是一个开源跨平台的多线程性能测试工具。
2.可以用来进行 CPU、内存、磁盘IO、线程、数据库的性能测试。
3.目前支持的数据库是 MySQL、Oracle 和 PostgreSQL。
sysbench 支持以下几种测试模式:
1、CPU 运算性能
2、磁盘 IO 性能
3、调度程序性能
4、内存分配及传输速度
5、POSIX 线程性能–互斥基准测试
6、数据库性能(OLTP 基准测试)

[root@centos79 ~]# yum install sudo
[root@centos79 ~]# curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
[root@centos79 ~]# sudo yum -y install sysbench

–版本号
[root@centos79 ~]# sysbench --version
sysbench 1.0.20

在这里插入图片描述

✨ 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 prepare3.确认数据
[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 下载安装

wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
tar -xf datax.tar.gz -C /usr/local/
cd /usr/local/datax

删除datax中的隐藏文件
find /usr/local/datax/plugin -name “.*” | xargs rm -f

安装依赖
yum install -y python2 java

生成模板文件
python2 /usr/local/datax/bin/datax.py -r mysqlreader -w oceanbasev10writer > /usr/local/datax/job/my2ob.json

✨ 3.2 模板配置

# 根据实际环境修改
vi /usr/local/datax/job/my2ob.jsoncat > /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 同步表结构

–使用 mysqldump 将 mysql的表结构和数据同步到 OceanBase 的MySQL 租户中
1.导出mysql数据
导出表结构
[root@centos79 ~]# mysqldump -h127.0.0.1 -P3306 -proot -uroot -d obtest --compact > mysql_ddl.sql
导出数据
[admin@10 tpcc-mysql]$ 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替换为utf8obclient [testdb]> SELECT COLLATION("oceanbase");
+------------------------+
| COLLATION("oceanbase") |
+------------------------+
| utf8mb4_general_ci     |
+------------------------+
1 row in set (0.001 sec)3.DataX运行时报错运行时出错, 具体原因请参看DataX运行结束时的错误诊断信息 .].  - java.lang.NumberFormatException: multiple pointsat sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1914)
根DataX版本有关,下载最新的DataX即可

6.总结

从MySQL向OceanBase迁移数据的基本方法:mysqldump、datax 、canal 等.本次基于datax迁移方便,便捷,文末列出的报错希望能给大家带来帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/748023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go和rust使用protobuf通信

先下载protoc 首先下载proc程序以生成代码 https://github.com/protocolbuffers/protobuf/releases 解压&#xff0c;然后把bin目录的位置放到环境变量 测试 rust作为server&#xff0c;rpc使用tonic框架 官方教程 go作为service&#xff0c;使用grpc go语言使用grpc 效…

Xilinx LVDS ISERDESE2

ISERDESE2 7 系列 FPGA 是一款专用的串行到并行转换器,具有特定的时钟和逻辑功能,旨在促进高速源同步应用的实现。该ISERDESE2避免了在FPGA架构中设计解串器时遇到的额外时序复杂性. ISERDESE2功能包括: 1,专用解串器/串行转换器 ISERDESE2解串器可实现高速数据传输,而无需…

FPGA静态时序分析与约束(四)、时序约束

系列文章目录 FPGA静态时序分析与约束&#xff08;一&#xff09;、理解亚稳态 FPGA静态时序分析与约束&#xff08;二&#xff09;、时序分析 FPGA静态时序分析与约束&#xff08;三&#xff09;、读懂vivado时序报告 文章目录 系列文章目录前言一、什么是时序约束&#xff1…

C++/CLI学习笔记10(快速打通c++与c#相互调用的桥梁)

1:理解局部和全局作用域 函数体中定义的局部变量的作用域:它们在函数执行期间创建,在函数结束时自动销毁。这意味着不同函数中的同名变量不会冲突。 还可在所有函数外部声明全局变量。全局变量在之后的所有函数定义中可见。可利用这种变量在多个函数之间共享信息。 全局变…

【JavaEE -- 多线程3 - 多线程案例】

多线程案例 1.单例模式1.1 饿汉模式的实现方法1.2 懒汉模式的实现方法 2. 阻塞队列2.1 引入生产消费者模型的意义&#xff1a;2.2 阻塞队列put方法和take方法2.3 实现阻塞队列--重点 3.定时器3.1 定时器的使用3.2 实现定时器 4 线程池4.1 线程池的使用4.2 实现一个简单的线程池…

【XR806开发板试用】基于WEBSOCKET实现人机交互(控制开关灯)以及开发问题记录

一、开发板编译、功能介绍 根据官方文档编译烧录成功后&#xff0c;我们修改下官方例子&#xff0c;进行开发来实现websocket。 整体流程&#xff1a;开发板先自动寻找指定的wifi并且连接&#xff0c;连接成功后&#xff0c;通过websocket来与服务端连接&#xff0c;连接成功后…

【SVG】前端-不依靠第三方包怎么画连线???

如何用SVG实现连线功能 在Web开发中&#xff0c;我们经常会遇到需要在页面上绘制图形或者实现一些图形交互的场景。SVG&#xff08;Scalable Vector Graphics&#xff09;作为一种用于描述二维图形的XML标记语言&#xff0c;在这方面提供了极大的便利。本文将以一个具体的例子…

【 React 】对React refs的理解?应用场景?

1. 是什么 Refs在计算机中称为弹性文件系统(英语&#xff1a;Resilient File System,简称ReFS) React中的Refs提供了一种方式&#xff0c;允许我们访问DOM节点或在render方法中创建的React元素 本质为ReactDOM.render()返回的组件实例&#xff0c;如果是渲染组件则返回的是组件…

蜡烛图K线图采用PictureBox控件绘制是实现量化交易的第一步非python量化

用vb6.0开发的量化交易软件 VB6量化交易软件的演示视频演示如上 股票软件中的蜡烛图是非常重要的一个东西&#xff0c;这里用VB6.0自带的Picture1控件的Line方法就可以实现绘制。 关于PictureBox 中的line 用法 msdn 上的说明为如下所示 object.Line [Step] …

LabVIEW电液伺服作动器

LabVIEW电液伺服作动器 随着工业自动化技术的快速发展&#xff0c;电液伺服作动器在各类精密控制领域得到了广泛应用。基于CRIO架构&#xff0c;利用LabVIEW软件开发了一套电液伺服作动器测控系统&#xff0c;实现了高精度的位移同步控制与测量&#xff0c;有效提高了系统的控…

3.Gen<I>Cam文件配置

Gen<I>Cam踩坑指南 我使用的是大恒usb相机&#xff0c;第一步到其官网下载大恒软件安装包,安装完成后图标如图所示&#xff0c;之后连接相机&#xff0c;打开软件&#xff0c;相机显示一切正常。之后查看软件的安装目录如图&#xff0c;发现有GenICam和GenTL两个文件&am…

uniapp无感登录封装

全局请求封装 https://blog.csdn.net/qq_42618566/article/details/109308690 无感登录封装 import {http} from "./index.js" let requestsQueue []; // 请求队列// 记录请求队列 export function recordRequests(path, params, loading, method) {requestsQueu…

JVM高频面试点(一):Java类加载过程

1.概述 在 Java 中&#xff0c;类加载过程是指将 Java 类的字节码加载到内存中&#xff0c;并转换为 Java 虚拟机能够识别和执行的数据结构的过程。类加载是 Java 虚拟机执行 Java 程序的必要步骤之一&#xff0c;它负责加载程序中用到的类和接口。下图所示是 ClassLoader 加载…

Apache Paimon 使用 Kafka CDC 获取数据

a.依赖准备 flink-sql-connector-kafka-*.jarb.支持的文件格式 Flink提供了几种Kafka CDC格式&#xff1a;Canal、Debezium、Ogg和Maxwell JSON。 如果Kafka的Topic中的消息是使用Change Data Capture&#xff08;CDC&#xff09;工具从另一个数据库捕获的change event&…

ChatGPT:突破写作限制,开启论文写作新境界

ChatGPT无限次数:点击直达 【引言】 在当今信息爆炸的时代&#xff0c;学术界对于高质量论文的需求日益增加。然而&#xff0c;对于许多研究者而言&#xff0c;论文写作是一个耗时且困难的过程。幸运的是&#xff0c;随着人工智能技术的进步&#xff0c;我们迎来了ChatGPT&…

C语言向C++过渡的基础知识(一)

目录 C关键字 C命名空间 命名空间的介绍 域作用限定符 命名空间的使用 C的输入以及输出 C中的缺省参数 缺省参数的介绍 缺省参数的使用 缺省参数的分类 全缺省参数 半缺省参数 C关键字 在C中&#xff0c;有63个关键字&#xff0c;而C语言只有32个关键字 asm do i…

鸿蒙车载原生开发,拓展新版图

一天内连发“五弹”、HiCar 4.0首次上车 华为鸿蒙狂扩“汽车朋友圈”-上游新闻 汇聚向上的力量 3月15日&#xff0c;在“华为云&华为终端云服务创新峰会2024”上&#xff0c;华为首批汽车行业伙伴广汽传祺、岚图汽车、零跑汽车、凯翼汽车加入鸿蒙生态合作&#xff0c;华为…

FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+OSD动态字符叠加,提供1套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI接收发送本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收HLS图像缩放HLS多路视频拼接应用本方案的SDI接收HLS多路视频融合叠加应用本方案的S…

如何用 UDP 实现可靠传输?并以LabVIEW为例进行说明

UDP&#xff08;用户数据报协议&#xff09;本身是一个无连接的、不可靠的传输协议&#xff0c;它不提供数据包的到达确认、排序保证或重传机制。因此&#xff0c;如果要在UDP上实现可靠传输&#xff0c;就需要在应用层引入额外的机制。以下是一些常见的方法&#xff1a; 确认和…

在github上如何删除自己仓库里没用的项目

在GitHub上删除自己仓库里的无用项目可以通过以下步骤进行&#xff1a; 在GitHub上登录您的账号并进入要删除的仓库页面。 在仓库页面的右上角&#xff0c;点击“Settings”&#xff08;设置&#xff09;按钮。 在仓库设置页面的左侧导航栏中&#xff0c;点击“Options”&…