zoukankan      html  css  js  c++  java
  • percona toolkit 更新至一致性检查

    percona toolkit 安装

    依赖
    yum install per-DBD-MySQL perl-DBD-MySQL perl-IO-Socket-SSL perl-Time-HiRes perl-TermReadKey
     
    下载安装
    安装软件(主库,最好主从都安装)
    rpm -ivh percona-toolkit-3.0.12-1.el6.x86_64.rpm

    权限(主库从库)

    GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE,CREATE,DELETE,INSERT,UPDATE ON *.* TO 'check'@'X.X.X.%' identified by 'XXXX';

    1、一致性检查工具 pt-table-checksum  pt-table-sync

    1.1 问题

    主从replication

    一个比较容易遇到的错误

    show slave status
    Duplicate entry '2' for key 'PRIMARY', Error_code: 1062

    常用处理方法 

    检查/删除从库冗余数据,重新由replication操作。

    或者确认从库数据与主库一致,直接set global sql_slave_skip_counter=1 并重启stop slave;start slave   (skip并不检查一致性,只考虑rely log是否未报错 )

    由于过多skip人为因素、statement复制模式带来的语句操作差异,等,数据库主从可能处于不一致状态

    1.2 问题复现

    测试
    从库添加2    主库添加2和3 
     
    show slave status
    Seconds_Behind_Master: NULL
    Last_SQL_Error: Could not execute Write_rows event on table test.t1; Duplicate entry '2' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql50-bin.000001, end_log_pos 1077
     
     
    从库skip
    set global sql_slave_skip_counter=1
    并重新启动slave
    stop slave
    start slave
     
    从库数据
     

    由于操作不严谨,导致主从数据不一致。此时slave状态是正常的。

    1.3 一致性检查工具pt-table-checksum

    在主库上检查
    可以不加--databases --tables项全表扫描
    pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --replicate=percona.checksum --create-replicate-table --databases=test --tables=t1 h=10.27.X.X,u=check,p=XXXXXXXXX,P=3306
    当slave异常时
     
    当主从数据不一致时

      

    1.4 修复工具pt-table-sync

    仅检查库表数据,不检查结构、索引等
    在主库上执行
    pt-table-sync --replicate=percona.checksum h=主库ip,u=check,p=xxx h=从库ip,u=check,p=XXXX--print
    提示操作方法

    或者直接--exec 自动修复

    原测试用不一致的 2 2 变成2 222
     

    2 slowlog 工具pt-query-digest

    ./pt-query-digest  slow.log  >digest.log
    另另可加上各种参数辅助
    如分析最近12小时内的查询:
    pt-query-digest  --since=12h  slow.log > slow_report2.log


     3信息检查 pt-mysql-summary

     
     
  • 相关阅读:
    myeclipse10集成Tomcat6时出现错误
    myeclipse10.0如何集成Git
    java中Integer在JDK1.6和JDK1.7中的区别
    Git简介和安装
    Git配置的用户名密码在本地的存贮位置
    关于ActiveMQ接收端停止接收的方法
    eclipse集成SVN插件-----复制添加插件
    【Python3之常用模块】
    【Python中if __name__ == '__main__': 的解析】
    【Python3之面向对象的程序设计】
  • 原文地址:https://www.cnblogs.com/infaaf/p/9978667.html
Copyright © 2011-2022 走看看