MST

星途 面试题库

面试题:MySQL主备一致性校验之常用工具及基本原理

在MySQL主备一致性校验中,常用的工具都有哪些?请阐述其中一种工具进行一致性校验的基本原理。
33.3万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

常用工具

  1. pt-table-checksum:由Percona Toolkit提供,用于检查MySQL主从数据一致性。
  2. MHA自带的check_repl_status:在MHA(Master High Availability)工具集中,可辅助检测主从一致性。
  3. Orchestrator:不仅用于主从切换,也能进行一定程度的主从一致性检查。

pt-table-checksum基本原理

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