迁移MySQL数据到OceanBase集群

本文介绍了如何使用mysqldump工具和datax进行数据迁移,从MySQL数据库导出数据并导入到Oceanbase。在过程中,遇到了数据未成功迁移的问题,通过分析日志和调整datax的JSON配置,发现Oceanbasewriter的连接串需与MySQL模式区分开来,以确保迁移的正确性。
摘要由CSDN通过智能技术生成

一、使用mysqldump实现数据迁移

1.1 登录数据源查看数据库信息

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.02 sec)

1.2 登录目标数据库查看数据库信息

 ~ mysql -h10.0.0.61 -P2883 -uroot@obmysql#CLUSTER:1669117169 -p
Enter password:


mysql>
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| oceanbase          |
| information_schema |
| mysql              |
+--------------------+
3 rows in set (0.02 sec)

1.3 导出数据源中数据

mysqldump -uroot -p -h10.0.0.6 -P3305 --databases test --add-drop-database > test.sql

参数说明:

--databases:指定导出的数据库

--add-drop-database:创建数据库前,使用drop database删除同名数据库

1.4 目标数据库中导入数据

# 导入数据
~ mysql -h10.0.0.61 -P2883 -uroot@obmysql#CLUSTER:1669117169 -p <test.sql
Enter password:
# 登录目标数据库查看
~ mysql -h10.0.0.61 -P2883 -uroot@obmysql#CLUSTER:1669117169 -p
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| oceanbase          |
| information_schema |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.03 sec)

导入时,由于mysqldump生成的sql文件中会有些无法识别的注释语句,根据提示将这些注释行删除即可。

二、使用datax方式迁移数据

2.1 datax在macos环境下安装部署

(1)下载地址

https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202210/datax.tar.gz

(2)解压安装

tar -xvf datax.tar.gz

(3)服务自检

由于git上标注datax需要在linux环境上运行。当前实验的机器是mac,因此该步骤主要检测当前环境是否可以正常运行datax

cd {datax解压目录}/datax/bin
python datax.py {datax解压目录}/datax/job/job.json

 

 

出现以上结果,说明datax在macos环境下也能正常运行。

接下来配置数据迁移的脚本。

2.2 迁移脚本准备

迁移脚本两种重要的配置项:reader、writer。

顾名思义,从源数据库读取数据,写入到目标数据库。

在当前的场景下,源数据库就是本地数据库,目标数据库是我们要迁入数据的Oceanbase数据库。

 

现在准备将源数据库中mysql库下test_import1迁移到oceanbese中。

test_import1表的数据量和表结构如下:

2.2.1 json文件中源数据库配置

 

2.2.2 json文件中目标数据库配置

目标数据库的数据库、表名可以和源数据库不一致

 

2.3 开始迁移

 

 

显示迁移总数20001条,和源数据库中表的行数相同。

查看oceanbase中test库,发现test_import1这个表数据是空。但是从datax的结果上看数据已经迁移成功。

 

接下来排查一下问题出现在哪里。

2.4 问题分析

首先查看运行过程中的日志信息,发现并没有错误记录。

首先查看datax的日志:{datax解压目录}/log

 

查看日志文件,发现只是将每次执行的结果重定向到文件中,没有多余的线索。

尝试从mysql迁移到mysql数据库,发现能迁移成功。

 

 

猜测问题可能性还是在配置文件中的写法的问题。

查看官方文档中关于oceanbase的datax使用实例,可以看到如下示例:

社区版:

https://www.oceanbase.com/docs/community-observer-cn-10000000000900965

企业版:

https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-0000000001078702

 

 

原先考虑oceanbase应该是完全兼容mysql模式,因此writer的连接串采用mysql模式。但是datax似乎是严格区分mysql和oceanbase。因此导致原先的写法数据无法迁入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值