MariaDB到MySQL数据迁移案例分享

2024年 3月 11日 65.7k 0

前言

最近完成了一套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/ 

技术分享 | MySQL 的 TIMESTAMP 类型字段非空和默认值属性的影响

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等客户端工具有一些也具备迁移功能

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

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论