DBMotion——MySQL迁移利器

来源:这里教程网 时间:2026-03-01 16:53:49 作者:

最近有一批 MySQL 数据库要做一下数据迁移 由于之前经历过大批量数据库迁移 心力憔悴 因此 接手这个任务的时候 感觉肝部有些隐隐作痛

由于迁移的时候有各种场景 如同版本 跨版本 全量迁 部分迁 可停机 不可停机等 所以需要事先部署各种开源工具 比如 xtrabackup mydumper pt - table - checksum 等工具 来进行物理迁移 逻辑迁移以及数据校验 另外 还要提前进行检查 评估 跨部门会议 迁移 校验 回退等各项繁杂的规划 在无数个深夜里 各种命令行指定一顿敲 敲的时候还要找几个人趴在屏幕上一字一句的核对 简直要瞎了一双狗眼 就没有一款能让我端着咖啡点点选选就把迁移给做完的工具吗 我默默地在心底发出疑问

经朋友推荐 了解到了 DBMotion 这个工具 看了下简介和演示 好像很符合我期望中迁移工具的形态 那用起来到底怎么样呢 于是我用这个工具做了一些验证

首先是 DBMmotion 的获取方式 在浏览器输入 squids.cn 进入网页 然后翻到最下面 找到智能小工具 点击 DB M otion 进入 DBM otion 的主页

DBMotion 主页中有演示视频 DBMotion 做了一些介绍 使用的话 可以本地利用 docker 搭建 或者点击免费试用直接适用在线环境 在这里 点击免费使用 用一下在线环境

点击免费使用后进入到了 DBMotion 的控制台 页面比较简洁 数据传输里面就一个添加任务的按钮 点一下试试

点击添加任务后 看到了熟悉的界面 无非是输入源端目标端的的数据库 IP 端口 账号 密码 另外给了迁移所需要的最小权限的授权语句 . 由于我对账号没做什么限制 就直接用 root 账号了 迁移方式这里还提供了三种迁移方式 分别是 M y SQL   to  M y SQL M y SQL to   C lick H ouse M ongo   to   M ongo 这里主要关注 M y SQL to  M y SQL

输入源端目标端的数据库信息后 测试连接通过后 就进入了迁移选项页面 页面中可以选择需要迁移的用户和 DB 还可以指定并发数 迁移结构 数据及是否同步增量数据

这里选了一个测试的 DB 包含 10 500 W 的表及测试用户 做一下全量 + 增量的迁移 点击下一步就进入了预检查的页面 预检查页面会有迁移的内容 迁移的数据量大小及耗时评估 11 G 预估 5 分钟迁移完 每秒大概 30 M 速度还不错 不过这应该是指最大速度 我两个环境之间的带宽是 40 M 能达到 5 M / s 就不错了 这里预估的时候应该没考虑到带宽 另外 还有一些影响迁移及迁移后使用的一些检查 并会给出修复建议 省了自行检查的功夫 细看了下预检查的项 还有 binlog 保留时间以及 procedure 等对象的定义者检查 之前踩过这方面的坑 感觉预检查的内容还是挺全面的

看完预检查后点击创建就进入了正式迁移 在控制台生成了此次迁移的任务

点击任务名称进入迁移详情 看看都有些啥 可以看到有对象迁移 全量迁移等栏目 增量迁移和数据校验等都是灰色的 因为还没有进入到增量迁移的步骤 看了下对象迁移 主要是显示表结构 存储过程 函数等对象的迁移情况 又着重看了下全量迁移的显示 可以看到迁移进行的时间 预计剩余的时间以及迁移进度及速度 感觉还不错 能让人心里对当前迁移的进度有个直观的判断 方便向领导汇报进度 比之前命令行的方式感受要好很多 此外还有每个表的迁移详情 看起来更加直观 另外实时速度有 4 M 左右 基本已经把带宽打满了 也符合了我之前对迁移预估时间的猜测

迁移过程中 我到源库中 genral   log 以及 show   processlist 看了一下 没有发现加锁的情况 感觉比较奇怪 不加锁怎么保证我数据的一致性呢 后面咨询了下官方的技术人员 得知 DBMotion 迁移过程中不会对数据库加锁 因为增量的时候会将全量迁移时刻开始的数据往后重做一遍 insert 会改为 replace delete 删除成功就删除了,删除失败就忽略, update 只要不更新主键就做成 replace ,如果是更新主键,就做成 delete+replace 但前提是全量迁移过程中不要做 DDL 按照这个逻辑推演了一下 确实可以实现最终一致性 至于全量过程中不做 DDL 这个提前和业务声明一下就好了

迁移全程无锁 想想感觉就很舒服 之前迁移的时候 老是有某些连接没停干净 导致我做备份加锁失败 去掉加锁后还能实现数据一致性 在这里给个好评

全量完成后 增量迁移的详情也可以点进去了 主要想关注下增量进度的显示 看到有专门的延迟显示 还是符合期望值的

然后再看一下数据校验 咨询了下官方客服 校验的时候要停业校验 看来没有做成 pt - table - checksum 那种在线的方式 不过也能接受 停止测试增量数据的压测 点击一下运行校验 可以看到校验了各种对象结构以及数据 数据采用了行数和 checksum 的双重校验方式

这里模拟下不一致 看看能不能校验出来 模拟字符集和数据不一致后重新运行校验 查看结果 都给我校验出来了 再次好评 数据校验对迁移来说还是很重要的 这是一个兜底的功能 数据校验不通过我顶多不做业务切换 要是数据有问题但是没有校验出来 那可就麻烦了 经过我大量的不一致模拟 发现 DBMotion的校验功能还是非常靠谱的 千奇百怪的不一致都能给我校验出来 用起来非常踏实 不过目前没有重新同步不一致的功能 加上这个功能的话就更完美了

校验通过后 点击结束迁移就可以完成这次迁移了 全程我只需要输入一下迁移库的信息 选择一些要迁移的内容 剩下的就完全自动化 并有可视化页面的及时反馈 用我匮乏的成语储备来形容一下整个过程 就是云淡风轻

  尝试了 DBMotion 工具 终于实现了我点点选选喝着咖啡完成迁移的愿望了 我想以后我的肝会变好 眼睛也会变好了 点点选选 操作简单 全程无锁 速度喜人 更有强大的校验功能来兜底 你不想拥有一个吗

相关推荐