sync-diff-inspector 是一个用于校验 MySQL/TiDB 中两份数据是否一致的工具。该工具提供了修复数据的功能(适用于修复少量不一致的数据)。
sync-diff-inspector 的使用限制
对于 MySQL 和 TiDB 之间的数据同步不支持在线校验,需要保证上下游校验的表中没有数据写入,或者保证某个范围内的数据不再变更,通过配置
range来校验这个范围内的数据。不支持 JSON、BIT、BINARY、BLOB 等类型的数据,在校验时需要设置
ignore-columns忽略检查这些类型的数据。FLOAT、DOUBLE 等浮点数类型在 TiDB 和 MySQL 中的实现方式不同,在计算 checksum 时会分别取 6 位和 15 位有效数字。如果不使用该特性,需要设置
ignore-columns忽略这些列的检查。支持对不包含主键或者唯一索引的表进行校验,但是如果数据不一致,生成的用于修复的 SQL 可能无法正确修复数据。
sync-diff-inspector 所需的数据库权限
sync-diff-inspector 需要获取表结构信息、查询数据,需要的数据库权限如下:
上游数据库
SELECT(查数据进行对比)
SHOW_DATABASES(查看库名)
RELOAD(查看表结构)
下游数据库
SELECT(查数据进行对比)
SHOW_DATABASES(查看库名)
RELOAD(查看表结构)
配置文件说明
sync-diff-inspector 的配置总共分为五个部分:
- Global config: 通用配置,包括校验的线程数量、是否输出修复 SQL 、是否比对数据等。
- Datasource config: 配置上下游数据库实例。
- Routes: 上游多表名通过正则匹配下游单表名的规则。(可选)
- Task config: 配置校验哪些表,如果有的表在上下游有一定的映射关系或者有一些特殊要求,则需要对指定的表进行配置。
- Table config: 对具体表的特殊配置,例如指定范围、忽略的列等等。(可选)
下面是一个完整配置文件的说明:
- 提示:配置名后带
s的配置项允许拥有多个配置值,因此需要使用方括号[]来包含配置值。
主要功能:
- 对比表结构和数据
- 如果数据不一致,则生成用于修复数据的 SQL 语句
- 支持不同库名或表名的数据校验
- 支持分库分表场景下的数据校验
- 支持 TiDB 主从集群的数据校验
- 支持从 TiDB DM 拉取配置的数据校验
你可通过以下方式下载 sync-diff-inspector:
Binary 包。sync-diff-inspector 的安装包位于 TiDB 离线工具包中。下载方式,请参考 TiDB 工具下载。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




