作者信息:https://home.cnblogs.com/u/huangjiabobk

在运维的工作中,如何做主从数据一致性校验?

在运维工作中,确保 MySQL 主从数据一致性非常重要。以下是详细的主从数据一致性校验方法,结合了搜索结果中的信息。

1. 配置主从数据库

在开始校验之前,确保主从数据库已经正确配置。

  • 主库配置

    • 开启二进制日志:log_bin
    • 创建用于从库同步的用户:CREATE USER
    • 授予从库用户必要的权限:GRANT
  • 从库配置

    • 配置从库连接主库信息:CHANGE MASTER TO
    • 启动从库与主库的同步:START SLAVE
2. 使用 pt-table-checksum 工具

pt-table-checksum 是 Percona Toolkit 中的一个工具,用于检查主从复制的一致性。

  • 安装工具

    • 下载并安装 Percona Toolkit:

      wget http://www.percona.com/get/percona-toolkit.tar.gz
      tar zxf percona-toolkit-2.2.13.tar.gz
      cd percona-toolkit-2.2.13
      perl Makefile.PL
      make && make install
      
    • 安装所需依赖:

      yum install perl perl-devel perl-Time-HiRes perl-DBI perl-DBD-MySQL perl-Compress-Raw-Bzip2 perl-Compress-Raw-Zlib perl-Digest perl-Digest-MD5 perl-IO-Compress perl-IO-Socket-IP perl-IO-Socket-SSL perl-Mozilla-CA perl-Net-Daemon perl-Net-LibIDN perl-Net-SSLeay
      
  • 授权

    • 在主库上授权:

      GRANT CREATE, INSERT, SELECT, DELETE, UPDATE, LOCK TABLES, PROCESS, SUPER, REPLICATION SLAVE ON *.* TO 'root'@'从库IP' IDENTIFIED BY '密码';
      FLUSH PRIVILEGES;
      
    • 在从库上授权:

      GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE ON *.* TO 'root'@'主库IP' IDENTIFIED BY '密码';
      FLUSH PRIVILEGES;
      
  • 执行校验

    • 使用 pt-table-checksum 检查主从数据一致性:

      pt-table-checksum --nocheck-binlog-format --nocheck-replication-filters --replicate=pt.checksums --databases=数据库名 -u用户名 -p密码 -h主库IP -P端口
      
    • 参数说明:

      • --nocheck-binlog-format:不检查复制的 binlog 模式。
      • --nocheck-replication-filters:不检查复制过滤器。
      • --replicate=pt.checksums:将校验信息写入指定表。
      • --databases=数据库名:指定需要检查的数据库。
      • -u用户名-p密码-h主库IP-P端口:连接主库的参数。
  • 查看结果

    • 如果主从数据不一致,DIFFS 字段会显示为 1。

    • 查看从库的 checksums 表,了解具体的不一致情况:

      SELECT * FROM checksums;
      
3. 使用 pt-table-sync 工具修复数据

如果发现主从数据不一致,可以使用 pt-table-sync 工具修复。

  • 执行修复

    • 使用 pt-table-sync 同步数据:

      pt-table-sync --replicate=pt.checksums h=主库IP,u=用户名,p=密码 h=从库IP,u=用户名,p=密码 --execute
      
    • 参数说明:

      • --replicate=pt.checksums:指定通过 pt-table-checksum 得到的表。
      • h=主库IPu=用户名p=密码:主库的连接信息。
      • h=从库IPu=用户名p=密码:从库的连接信息。
      • --execute:执行修复命令。
4. 注意事项
  • 备份数据:在进行修复之前,建议备份相关数据,以防万一。
  • 检查表结构:在修复一致性之前,确保主从库的表结构一致。
  • 权限要求:使用 pt-table-sync 需要一定的权限,如 SELECTPROCESSSUPERREPLICATION SLAVE 等。

综上所述,通过以上方法,可以有效地校验 MySQL 主从数据的一致性,并在发现不一致时进行修复,确保系统的稳定性和数据的可靠性。

posted @ 2025-04-02 23:58  黄嘉波  阅读(65)  评论(0)    收藏  举报
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波