• MySQL主从数据一致性检验


    MySQL主从数据一致性检验

    检查主从数据一致性,我们使用pt-table-checksum ,pt-table-checksum是percona-tools一个工具,用来校验主从库数据是不是一致。

    作为一个MySQL DBA 这个包里percona-tools的工具,建议大家都学习一下。

    一、安装percona-tools工具

    # wget https://www.percona.com/downloads/percona-toolkit/3.0.6/binary/redhat/7/x86_64/percona-toolkit-3.0.6-1.el7.x86_64.rpm
    # yum localinstall percona-toolkit-3.0.6-1.el7.x86_64.rpm 
    

    二、pt-table-checksum使用说明

    1.参数介绍

    --replicate=db1.checksum: 表示把结果存放到db1.checksum表中,默认是在percona.checksum表中。
    --recursion-method="processlist": 表示以什么方式发现从库。我们这里使用 processlist方式。这种方式要求主库和从库端口必须相同。如果不相同,只能使用DSN方式。

    --databases=dbname :表示校验指定库,不验证其他库。如果是所有库,可以不加这个参数就可以。如果要验证多个库,可以用逗号分隔,例如--databases=db1,db2,db3
    --tables=tbname: 表示检验指定的表。
    --nocheck-binlog-format :不让命令检测binlog 格式,使用这个命令的时候,使用的账号和密码 也必须可以从主库登录从库才可以。否则就报无法连接从库的错误。Cannot connect to P=3306,h=dev-hd-node3,p=...,u=root
    --replicate-check-only :表示只显示不一致的信息。一致信息就不显示了。只要有显示表示出现了不一致。

    2.输出内容介绍

    TS:完成检查的时间。
    ERRORS:检查时候发生错误和警告的数量。
    DIFFS:0表示一致,1表示不一致。当指定--no-replicate-check时,会一直为0,当指定--replicate-check-only会显示不同的信息。
    ROWS:被检查表的行数
    CHUNKS:被划分到表中的块的数目。
    SKIPPED:由于错误或警告或过大,则跳过块的数目。
    TIME:执行的时间。
    TABLE:被检查的表名。

    3.检测指定库

    # pt-table-checksum --nocheck-binlog-format --replicate=db1.checksum -h localhost -P3306 -u root -p unixfbi --databases=db1 --recursion-method="processlist" 
    Checking if all tables can be checksummed ...
    Starting checksum ...
    Cannot connect to P=3306,h=dev-hd-node3,p=...,u=root
    Diffs cannot be detected because no slaves were found.  Please read the --recursion-method documentation for information.
                TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE
    01-26T16:08:00      0      0       44       1       0   0.005 db1.tb1
    01-26T16:08:00      0      0       13       1       0   0.004 db1.tb2
    

    4.忽略某些库的检测

    使用 --ignore-databases参数,例如忽略mysql库的检测。

    # pt-table-checksum --nocheck-binlog-format  -h localhost -P3306 -u root -p unixfbi --ignore-databases=mysql --recursion-method="processlist" 
    Checking if all tables can be checksummed ...
    Starting checksum ...
                TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE
    01-26T16:26:16      0      1       30       1       0   0.013 db1.checksum
    01-26T16:26:16      0      0       44       1       0   0.013 db1.tb1
    01-26T16:26:16      0      0       13       1       0   0.012 db1.tb2
    01-26T16:26:16      0      0        1       1       0   0.012 db2.tb3
    01-26T16:26:16      0      0        1       1       0   0.012 db2.tb4
    01-26T16:26:16      0      0        6       1       0   0.013 sys.sys_config
    01-26T16:26:16      0      0        2       1       0   0.013 wbx3306.t1
    01-26T16:26:16      0      0        0       1       0   0.013 wbx3306.tp_1
    

    5.只显示不一致内容

    # pt-table-checksum --nocheck-binlog-format  -h localhost -P3306 -u root -p unixfbi --ignore-databases=mysql --recursion-method="processlist" --replicate-check-only
    Checking if all tables can be checksummed ...
    Starting checksum ...
    Differences on dev-hd-node3
    TABLE CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY
    db1.checksum 1 0 1   
    

    6.检测指定表

    --databases=dbname --tables=tbname 需要用到这两个参数

    # pt-table-checksum --nocheck-binlog-format  -h localhost -P3306 -u root -p unixfbi --databases=db1 --tables=checksum --recursion-method="processlist" --replicate-check-only     
    Checking if all tables can be checksummed ...
    Starting checksum ...
    Differences on dev-hd-node3
    TABLE CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY
    db1.checksum 1 0 1   
    

    7.分段检测

    工作中一个表里可能有几百万甚至几千万条数据,如果对这样的表进行一致性检测的话,花费的时间会很长。所以我们可以对表进行分段检测,例如检测前1000行数据,或者5000行到10000行之间的数据。
    其实我们这里是使用的 --where参数;

    # pt-table-checksum --nocheck-binlog-format  -h localhost -P3306 -u root -p unixfbi --databases=db1 --tables=checksum --recursion-method="processlist" --replicate-check-only --where="id < 20"  
    

    参考文档

    https://www.percona.com/software/database-tools/percona-toolkit
    https://www.percona.com/doc/percona-toolkit/LATEST/index.html
    http://blog.itpub.net/12679300/viewspace-1454837/

    本文出自 “运维特工” 博客,转载请务必保留原文链接 和 http://www.unixfbi.com

  • 相关阅读:
    Windows JScript 在 游览器 中运行 调试 Shell 文件系统
    autohotkey 符号链接 软连接 symbolink
    软链接 硬链接 测试
    SolidWorks 修改 基准面 标准坐标系
    手机 路径 WebDAV 映射 驱动器
    Win10上手机路径
    explorer 命令行
    单位公司 网络 封锁 屏蔽 深信 AC
    cobbler自动化部署原理篇
    Docker四种网络模式
  • 原文地址:https://www.cnblogs.com/pangguoping/p/8563823.html
Copyright © 2020-2023  润新知