zoukankan      html  css  js  c++  java
  • mysql主从一致性校验

    pt-table-checksum是查看主从一致性的工具, 网上很多人说 pt-table-checksum 要在主库上执行,其实不是的,我的mysql实例比较多,只需在某一台服务器上安装percona-toolkit,这台服务能够同时访问主库和从库就行了。
    工具安装:
    1.软件下载:
     
    # wget https://www.percona.com/downloads/percona-toolkit/3.0.3/binary/redhat/6/x86_64/percona-toolkit-3.0.3-1.el6.x86_64.rpm
     
    2.安装该工具依赖的软件包:
    # yum install perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes -y
    3、软件安装
    # rpm -ivh percona-toolkit-3.0.3-1.el6.x86_64.rpm 
    如果提示需要依赖,那么使用下列方式安装
    # yum localinstall percona-toolkit-3.0.3-1.el6.x86_64.rpm
    4、查看是否安装成功
    # rpm -qa | grep percona-toolkit
     
    在master和slave创建账号:
    mysql>GRANT SELECT,PROCESS,SUPER,REPLICATION SLAVE,CREATE,DELETE,INSERT,UPDATE ON *.* TO 'USER'@'HOST' identified by 'PASSWORD';
    mysql>flush privileges;
    说明:HOST指安装percona-toolkit的服务器IP。
     
    在安装了percona-toolkit的服务器上执行:
    #pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --replicate=cnt.checksums --databases=cnt --tables=ldb_alipay_order h=Master_HOST,u=root,p=123456,P=3306
    --no-check-replication-filters 表示不需要检查 Master 配置里是否指定了 Filter。 默认会检查,如果配置了 Filter,如 replicate_do_db,replicate-wild-ignore-table,binlog_ignore_db 等,在从库checksum就与遇到表不存在而报错退出,所以官方默认是yes(--check-replication-filters)但我们实际在检测中时指定--databases=,所以就不存在这个问题,干脆不检测。
     
    --no-check-binlog-format 不对binlog的格式进行检查
     
    --replicate-check-only  只显示主从不一致部分,此参数不会生成新的checksums数据,只会根据checksums表已经有的数据来显示
     
    --databases=-d:要检查的数据库,逗号分隔。 --databases-regex 正则匹配要检测的数据库,--ignore-databases[-regex]忽略检查的库。Filter选项。
     
    --tables=-t:要检查的表,逗号分隔。如果要检查的表分布在不同的db中,可以用--tables=dbname1.table1,dbnamd2.table2的形式。
    同理有--tables-regex--ignore-tables--ignore-tables-regex--replicate指定的checksum表始终会被过滤。
     
    [root@master ~]# pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --replicate=cnt.checksums --databases=cent h=127.0.0.1,u=user,p=123456,P=3306
                TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE
    06-15T10:24:20      0      0      910       1       0   0.267 cent.ldb_alipay_order
    06-15T10:24:21      0      0     1557       1       0   0.283 cent.ldb_charge_history
    06-15T10:24:21      0      0     2555       1       0   0.262 cent.ldb_charge_history_detail
    06-15T10:24:21      0      0     1488       1       0   0.268 cent.ldb_device
    06-15T10:24:21      0      0        7       1       0   0.007 cent.ldb_device_charge
    06-15T10:24:21      0      0       34       1       0   0.007 cent.ldb_device_failure
    06-15T10:24:21      0      0        0       1       0   0.007 cent.ldb_device_pwd
    06-15T10:24:21      0      0        4       1       0   0.007 cent.ldb_failure_info
     
    TS :完成检查的时间
    ERRORS :检查时候发生错误和警告的数量
    DIFFS :0表示一致,1表示不一致。当指定–no-replicate-check时,会一直为0,当指定–replicate-check-only会显示不同的信息
    ROWS :表的行数
    CHUNKS :被划分到表中的块的数目
    SKIPPED :由于错误或警告或过大,则跳过块的数目
    TIME :执行的时间
    TABLE :被检查的表名
     
    提示错误:
    问题一:
    Waiting for the --replicate table to replicate to localhost.localdomain...
     
    问题出在percona.checksums 表在从库不存在,根本原因是没有从主库同步过来,所以看一下从库是否延迟严重。
     
    问题二:
    Diffs cannot be detected because no slaves were found.  Please read the --recursion-method documentation for information.
     
    上面的提示信息很清楚,因为找不到从,所以执行失败。用参数--recursion-method 可以指定模式解决.
  • 相关阅读:
    calico 网络流量 过程 分析 apt-get install telnet
    calico 排错记录 apt-get install telnet
    kubernetes 限制网络带宽 annotation -- 注解 -- 类似 label
    vxlan 简单理解 vs calico 网络模型
    ssh配置公私钥远程登录Linux主机 + scp 免密登录ssh-copy-id 如何使用非22端口 + rsync 同步远程机器的文件到本地
    架构图+kubernetes 问题理解 -- kube-pproxy
    声明式API replica controller vs replica set 对比
    Kubernetes哪一点最打动你?或者,它发布过的哪一项特性让你认为最厉害?
    statefulSet + headless service 学习记录 service :selector --> template :label
    nodeSelector + deamonset
  • 原文地址:https://www.cnblogs.com/qingchen-24K/p/7240380.html
Copyright © 2011-2022 走看看