推荐一款好用的数据一致性校验工具
为什么需要做数据一致性校验
一个好的工具应该具备哪些能力验
除了结构,数据无疑是另一关键的校验内容。数据存储支持丰富的数据类型,差异化的数据类型默认值、数据格式、字符集以及时区等。因此,能否支持完善的数据类型,屏蔽源及目标数据源在数据范围、数据格式、字符集及时区上的差异,也成为数据校验工具的核心能力。
数据校验的目的是为了验证数据一致性,并针对不一致数据进行快速补救。所以,能够定位并提供具体不一致的内容也是数据校验工具的重要特质。
当数据校验定位到不一致内容后,是否能够提供数据订正脚本帮助用户快速修复不一致数据也是校验工具必不可少的基础能力。
小编认为校验速度够快也是核心要求。尤其在数据迁移、数据集成场景,在这种场景下,数据校验会影响业务停机时间,或者下游数据生产基线【例如,报表生产时间】,对校验时间要求较苛刻。
校验工具一般都会高并发读取数据库的数据,此时,数据库同时承担着线上的业务应用。如何有效平衡数据校验速度以及数据库稳定性是校验工具应该解决的重要命题。
市面上都有哪些常见的方案
官网地址:https://www.ninedata.cloud/
NineData是玖章算术旗下的多云数据管理平台,它是一款即开即用的数据管理SAAS服务。当前NineData 已经支持数十种常见同异构数据源(MySQL、SQLServer、CK等)之间的结构对比、数据对比及数据订正能力。NineData结构及数据对比作为独立服务,可以灵活支持IDC、云主机自建及云托管数据源的数据一致性校验及快速修复。从使用体验、产品能力、稳定性及性能等维度综合来看,NineData是一款综合实例比较强、比较难得的校验工具。
官网地址:https://docs.percona.com/percona-toolkit/pt-table-checksum.html
percona-toolkit是由数据库厂商percona提供的工具集,其中: pt-table-checksum、 pt-table-sync 提供了MySQL主从复制一致性校验及修复的能力。Pt-table-checksum主要通过在MySQL主中运行checksum query,然后利用MySQL主从复制,query流转到slave中,进行check对比。由于,需要借助MySQL主从复制的能力,percona-toolkit只能应用主从复制场景。其优势在于,当前工具使用比较广泛,成熟度比较高。
配合数据迁移工具,部分云厂商会提供对应的一致性校验能力。当前云厂商提供的校验能力,一般只支持数据校验,不支持结构校验,且数据订正能力比较弱。由于厂商的校验工具是跟迁移工具配合使用,所以,对于不使用迁移工具的数据源,当前不能提供数据校验能力。同时,其对云数据库的迁移支持较好,但是对于云主机上自建数据库以及IDC自建数据库支持不好或不支持。
NineData
即开即用的数据一致性校验服务
正如前面所述的推荐指数来看,NineData提供的结构对比、数据对比功能确实是综合实力比较强,也比较推荐的一款产品。除了基础的全量对比外,NineData还提供了快速对比、周期性对比及不一致复检等多种对比形态。
-
快速对比 相较于全量对比,快速对比主要用以校验窗口期比较短的情况。快速对比会对数据量、数据分布进行校验,同时会随机抽样一定的比例进行校验。 -
周期性对比 自定义对比频率及对比方式,NineData会自动周期性调度对比任务进行结构及数据对比。小编理解这个 功能应该用于长期数据复制场景的数据对比,例如主从复制、数据容灾、数据多活或数据仓库实时集成等场景。 -
不一致复检 即针对上一次对比结果中不一致数据进行重新复检。这个功能主要应用于数据订正、主从复制【主从延迟】场景下,进行快速的复检。
接下来,带大家感受下这个产品的使用体验。
整个任务配置过程很简单,主要分为三个步骤:
-
选择数据源,即配置对比的源实例及目标实例; -
选择对比对象,即配置需要对比的对象,对比对象可以选择库、表|非表、列; -
配置映射关系及过滤条件,即配置对比表的映射关系;或者通过配置SQL过滤条件,可以只对关键数据进行对比。
写在最后
扫码加入 NineData 用户交流群