MariaDB到MySQL数据迁移案例分享

2024-03-12 08:34:24 浏览数 (3)

前言

最近完成了一套mariadb10.10.x的库到mysql8.0的迁移。给大家分享一下实践过程以及对mysql数据库数据迁移的一些简单思路。

基础环境

源端:mariadb 10.10.x, 未开binlog(重要信息,不能重启,业务不能中断) 目标端:mysql8.0

迁移方案

cloudcanal社区版本 全量 数据订正 && 修订

本来想部署docker版本实现,但是离线环境docker搭建都很折腾,无奈之下,只好二进制安装。 安装方式和具体操作方式参考官方文档:

https://www.clougence.com/cc-doc/productOP/tgz/firstinstall_with_tgz

踩坑经历

1、mysql8.0 关键字

mysql8.0 中新增了不少关键字为系统关键字(https://dev.mysql.com/doc/refman/8.0/en/keywords.html )。比如time,rank等,cloudcanal社区版本在迁移表结构过程中并没有进行转义。

解决办法:跳过相关表,手动迁移(mysqldump)

2、create_time 定义被截断

create_time 字段业务在定义为 not null default current_timestamp, 迁移过程中该定义被截断,导致业务迁移后应用切换报错。爱可生开源社区有该案例详细分享。

https://opensource.actionsky.com/20211028-mysql/

https://opensource.actionsky.com/20211111-mysql/

3、数据检验耗时长

一开始采用全量校验模式,发现需要的时间非常长。后来和业务同事协商,跳过一些静态大表的校验后,剩下的校验任务在2h内完成。修订也在半小时完成。

ps:对业务的理解与熟悉非常重要。

mysql数据迁移的一些可选方案

这里列举一些常用的方案供大家参考:

1、xtraback 备份 binlog增量 2、dts工具 gravity、dm、cloudcanal、datax等工具 3、mysqldump pt-table-sync(增量) 4、mysqldump 管道直接灌(适合小库) 5、克隆插件 binlog 6、mysqlsh中的util备份恢复 7、workbeach等客户端工具有一些也具备迁移功能

大概这些工具与方案。具体的工具与实践选择还得根据业务和实际环境情况确定。

0 人点赞