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

 

 
 
posted @ 2018-11-18 17:56  EngineTang  阅读(319)  评论(0编辑  收藏  举报