丝滑的零停机在线迁移工具
DBMotion又发新版了!
此次版本更新,进一步加强了校验模块的能力,
并新增日志过滤功能、用户迁移和用户校验功能,
以及修复了多项问题。
01
查看校验失败表,
精准定位数据不一致行
本次新增了校验失败表,查看不一致功能,支持准确查看一个表内的源库和目标库到底哪些行不一致。迁移完成之后,如果你的表只有少量行不一致,就能很直接地帮你定位出来。
目前,DBMotion基于性能的考虑,对于源库和目标库的数据比较,是分块做checksum的。通过确定源库和目标库上每一个分片的checksum的一致性来确定表是否一致,加快对比的速度。这种对比方案,非常适用于表的绝大部分数据是一致的情况,用户校验完成后只需要着重关注不一致的表。
举个例子,当用户A使用DBMotion构建迁移任务,配置并完成了对象/表结构的迁移、全量迁移和增量迁移后,开始使用数据校验进行结果比对。在正常情况下,DBMotion迁移过来的数据应该跟源库是一模一样的,但是不管是增量同步、部分延迟、数据已在目标库被修改或是其他的原因,校验出数据后,部分表还是会出现不一致。
DBMotion新的版本允许用户点击“查看不一致”请求,去查看该校验失败的表到底是哪里不一致:
如图所示,该表中有三行不一致,页面显示为:
明显可以看到:
DBMotion将源库数据迁移到目标库,能够最大程度保证对象和数据的一致性。对于数据量特别大但只有很少一部分数据不一致的表来说,“查看不一致”可以精确定位到这些不一致的数据,明确到底是源库的数据、目标库的数据或是某一行数据的列不一致,从而确认导致数据不一致的原因。
在分析binlog日志时,如果发现最近的日志中正好有删除id=1,新增id=4和修改id=2的age值从2变为4的操作。那么,几乎可以确定这几行数据就是由于增量复制延迟而导致的,可采用增量同步追上的方式。如发现部分数据没有同步到目标库,也可以手工将这一部分数据导入目标库,确保数据的最终一致性。
这个功能也可能会有一定的副作用:从源库和目标库查询数据不一致的信息时,需要从源库和目标库上拉取数据,对网络、IO有较大影响。如果出现太多源库和目标库的数据不一致,建议用户对相关表进行全量重新同步,来保证数据的一致性。
为了尽量降低这个副作用,查看不一致功能目前只支持查看500条数据不一致的行。如DBMotion查询到不一致数据达到501行,会提醒用户,并不再继续查找。
数据校验是迁移任务的兜底工作,可以保证迁移前后数据的一致性。DBMotion在这一块花费了大量的精力进行打磨,后续版本会继续加强相关功能。
02
多项新增功能
除查看不一致行之外,这次发布还新增了以下功能:
这些功能的更新,想先人一步使用吗?
赶紧上Squids体验吧,
丝滑的DBMotion在线等你!