面试题答案
一键面试常用工具
- pt-table-checksum:由Percona Toolkit提供,用于检查MySQL主从数据一致性。
- MHA自带的check_repl_status:在MHA(Master High Availability)工具集中,可辅助检测主从一致性。
- Orchestrator:不仅用于主从切换,也能进行一定程度的主从一致性检查。
pt-table-checksum基本原理
- 原理概述:
pt-table-checksum
通过在主库上执行一系列的CHECKSUM TABLE
语句来生成表的校验和。它会将表按照一定的规则(如按主键范围)进行切分,对每个切分后的子集计算校验和。- 这些校验和信息会记录在主库的
percona.checksums
表中(需提前创建)。同时,工具会在备库上执行同样的操作,计算相同数据子集的校验和。 - 然后对比主库和备库上对应数据子集的校验和,如果校验和不一致,就意味着主备数据存在差异,即不一致。
- 具体流程:
- 初始化:工具首先连接到主库,确定要检查的数据库和表。如果指定了
--replicate
参数,它会创建或使用已有的记录校验和的表(如percona.checksums
)。 - 计算主库校验和:根据表结构和指定的切分方式(如按主键范围切分),对主库的表数据进行切分。对于每个数据子集,执行
CHECKSUM TABLE
语句计算校验和,并将结果记录到percona.checksums
表中,记录内容包括数据库名、表名、数据子集的标识(如主键范围)以及对应的校验和值。 - 计算备库校验和:工具连接到备库,以同样的切分方式对相同的数据子集计算校验和。
- 对比校验和:将备库计算得到的校验和与主库
percona.checksums
表中记录的校验和进行对比。如果发现不一致的记录,就表明主备数据在该数据子集上存在差异,工具会输出相应的报错信息,提示用户数据不一致的具体位置(如具体的表和数据子集)。
- 初始化:工具首先连接到主库,确定要检查的数据库和表。如果指定了