基于DataX迁移MySQL到OceanBase集群

这篇具有很好参考价值的文章主要介绍了基于DataX迁移MySQL到OceanBase集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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



本文详细介绍了从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

基于DataX迁移MySQL到OceanBase集群,国产数据库,mysql,oceanbase,数据库

✨ 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

基于DataX迁移MySQL到OceanBase集群,国产数据库,mysql,oceanbase,数据库

✨ 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

基于DataX迁移MySQL到OceanBase集群,国产数据库,mysql,oceanbase,数据库

✨ 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 |
+----------+

基于DataX迁移MySQL到OceanBase集群,国产数据库,mysql,oceanbase,数据库

📣 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.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 同步表结构

–使用 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

基于DataX迁移MySQL到OceanBase集群,国产数据库,mysql,oceanbase,数据库

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迁移方便,便捷,文末列出的报错希望能给大家带来帮助。文章来源地址https://www.toymoban.com/news/detail-841174.html

到了这里,关于基于DataX迁移MySQL到OceanBase集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【实战】OceanBase之OMS迁移Oracle至oceanbase

    背景 最近公司因为需要做Oracle2OceanBase的数据迁移后做测试,但是数据接近2T,对于超大数据表的迁移使用ETL工具,效率太慢了。综合考虑使用OMS,以下是做数据迁移的具体步骤,给大家提供一些借鉴。 把源端和目标端添加进去,源断是Oracle_ods,目标端是oceanbase_ods 选择好源

    2024年02月08日
    浏览(37)
  • mysql数据库迁移

    公司有个项目,刚开始数据量不是大的时候,数据库和服务上的所有应用数据都放在一个旧小盘中,随着项目数据的增长,旧的磁盘被占满了,导致系统无法写入数据,我和同事排查了很长时间,最终确定是磁盘被占满导致的一系列连锁问题。问题找到了,接下来就是想办法

    2024年02月14日
    浏览(47)
  • 如何迁移MySQL数据库?

    迁移MySQL数据库可以采取多种方法,以下是其中几种常用的方法: 备份和还原:将原有的MySQL数据库备份到一个文件中,然后将备份文件还原到新的MySQL服务器中。具体来说,可以使用mysqldump命令进行备份,使用mysql命令进行还原。例如,备份一个名为mydb的数据库可以使用以下

    2024年02月09日
    浏览(55)
  • 【数据库迁移系列】从MySQL到openGauss的数据库对象迁移实践

    在之前这一篇中我们分享过使用chameleon工具完成MySQL到openGauss的全量数据复制、实时在线复制。9.30新发布的openGauss 3.1.0版本 ,工具的全量迁移和增量迁移的性能不但有了全面提升,而且支持数据库对象视图、触发器、自定义函数、存储过程的迁移。 本篇就来分享一下使用c

    2024年02月02日
    浏览(64)
  • mysql数据库数据如何迁移目录

    默认位置 C:ProgramDataMySQLMySQL Server 8.0 步骤2中Data文件夹就是mysql存放数据的位置 这里举例移动到E盘下 原来my.ini文件不要修改文件位置,如果修改需要另行学习

    2024年02月07日
    浏览(74)
  • MySQL数据库迁移(直接复制文件)

    MySQL数据库迁移(直接复制文件) - 简书 (jianshu.com) 看了几种方法: 1、修改注册表的 windows下迁移mysql数据 - 程序员丁先生 - 博客园 (cnblogs.com) 2、mysqldump指令将数据库表/数据保存成xx.sql文件存到本地的 (157条消息) 如何简单实现mysql数据库迁移_岁月呀的博客-CSDN博客 看着都复

    2024年02月15日
    浏览(51)
  • 【数据库迁移系列】使用pgloader将数据从MySQL迁移到openGauss的最佳实践

    数据库迁移是实际工作中经常遇到的问题,比如由于磁盘空间、业务性能、项目改造等等原因,有从甲服务器迁移到乙服务器,从A种数据库迁移到B种数据库,从源路径迁移到另一个目标路径、同一个机器下从一个用户迁移到另一个用户等各种场景,有时需要整个数据库所有

    2024年02月02日
    浏览(66)
  • 数据库迁移之mysql到达梦数据库

    由于业务需求要求数据库国产化,因此将数据从mysql数据库中迁移到国产达梦数据库中。将mysql中的每个库迁移到达梦不同模式下,下面为详细过程。 (1)安装达梦客户端工具 (2)点击选择DM管理工具 (3)创建模式和用户 在用户菜单中,新建一个TEST模式以及相应的用户。

    2024年02月08日
    浏览(61)
  • Mysql数据库迁移|如何把一台服务器的mysql数据库迁移到另一台服务器上的myql中

      那么这里博主先安利一下一些干货满满的专栏啦! Linux专栏 https://blog.csdn.net/yu_cblog/category_11786077.html?spm=1001.2014.3001.5482 操作系统专栏 https://blog.csdn.net/yu_cblog/category_12165502.html?spm=1001.2014.3001.5482 手撕数据结构 https://blog.csdn.net/yu_cblog/category_11490888.html?spm=1001.2014.3001.5482 一、在

    2024年02月06日
    浏览(85)
  • Datax助力轻松迁移SQLServer数据至GreatSQL

    版本 IP 端口 Microsoft SQL Server 2017 192.168.140.160 1433 版本 IP 端口 GreatSQL-8.0.32 192.168.139.86 3308 环境说明 :借助Docker使用镜像启动数据库 2.1.1安装docker 1.安装基础软件包 2.配置 docker-ce 国内 yum 源(阿里云) 3.安装 docker 依赖包 4.安装 docker-ce 5.启动容器 2.1.2 拉取镜像 2.1.3运行容器

    2024年04月22日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包