zoukankan      html  css  js  c++  java
  • pt-table-checksum

    使用方法:
    pt-table-checksum [OPTIONS] [DSN]
    pt-table-checksum:在主<M>上通过执行校验的查询对复制的一致性进行检查,对比主从的校验值,从而产生结果。DSN指向的是主的地址,该工具的退出状态不为零,如果发现有任何差别,或者如果出现任何警告或错误,更多信息请见官网。
    不指定任何参数,会直接对本地的所有数据库的表进行检查。
     
    如果报错:
    Diffs cannot be detected because no slaves were found.  Please read the --recursion-method documentation for information.
    因为找不到从,所以执行失败。用参数--recursion-method 可以指定模式解决,关于--recursion-method参数的设置有:
    关于--recursion-method参数的设置有:
     
    METHOD       USES
    ===========  =============================================
    processlist      SHOW PROCESSLIST
    hosts              SHOW SLAVE HOSTS
    cluster            SHOW STATUS LIKE 'wsrep\_incoming\_addresses'
    dsn=DSN        DSNs from a table
    none               Do not find slaves
     
    默认是通过show processlist 找到host的值或show slave hosts 找到host的值。
    还有一种方法是show slave hosts;前提从库配置文件里面已经配置自己的地址和端口:
     
    # grep 'report' /etc/my.cnf 
    report_host = 192.168.56.56
    report_port = 3306
     
     
    最重要的一点是我们需要在从库上授权,能让主库访问。 
    注意:
    1、  根据测试,需要一个即能登录主库,也能登录从库的账号;
    2、  只能指定一个host,必须为主库的IP;
    3、  在检查时会向表加S锁;
    4、  运行之前需要从库的同步IO和SQL进程是YES状态。
     
    #  pt-table-checksum --replicate=lgj.checksums --nocheck-replication-filters --no-check-binlog-format   --databases=lgj --tables=tb01 h=127.0.0.1,u=repl,p=oracle,P=3306
                     TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE
    03-02T17:32:34      0         1              1          1           0          1.158       lgj.tb01
     
    通过DIFFS 是1 就可以看出主从的表数据不一致。怎么不一致呢? 通过指定--replicate=lgj.checksums 参数,就说明把检查信息都写到了checksums表中。
    进入SLAVE相应的库中查看checksums表的信息
     
     
    TS            :完成检查的时间。
    ERRORS        :不一致的chunk数量。当指定 --no-replicate-check 即检查完但不立即输出结果时,会一直为0;当指定 --replicate-check-only 即不检查只从checksums表中计算crc32,且只显示不一致的信息(毕竟输出的大部分应该是一致的,容易造成干扰)。
    DIFFS         :0表示一致,1表示不一致。当指定--no-replicate-check时,会一直为0,当指定--replicate-check-only会显示不同的信息。
    ROWS          :表的行数。
    CHUNKS        :被划分到表中的块的数目。
    SKIPPED       :由于错误或警告或过大,则跳过块的数目。
    TIME          :执行的时间。
    TABLE         :被检查的表名。
     
     
    参数的意思:
    --nocheck-replication-filters :不检查复制过滤器,建议启用。后面可以用--databases来指定需要检查的数据库。
    --no-check-binlog-format      : 不检查复制的binlog模式,要是binlog模式是ROW,则会报错。
    --replicate-check-only :只显示不同步的信息。
    --replicate=   :把checksum的信息写入到指定表中,建议直接写到被检查的数据库当中。 
    --databases=   :指定需要被检查的数据库,多个则用逗号隔开。
    --tables=      :指定需要被检查的表,多个用逗号隔开 
    --ignore-databases        :排除某些库。       
    --ignore-tables               :排除某些表。
    --where                          :可以使用限定条件。
     
    h=127.0.0.1    :Master的地址
    u=repl           :用户名
    p=oracle        :密码
    P=3306         :端口
     
     
     
  • 相关阅读:
    面试题15:链表中倒数第K个结点
    面试题31:连续子数组的最大和
    数据库索引实例
    面试题27:二叉搜索树与双向链表
    面试题28:字符串的排列
    java比较器Comparable接口和Comaprator接口
    面向对象知识汇总
    虚函数与纯虚函数
    Linux IO实时监控iostat命令详解
    hive GroupBy操作(翻译自Hive wiki)
  • 原文地址:https://www.cnblogs.com/l10n/p/12606732.html
Copyright © 2011-2022 走看看