MySQL 主从一致性检查

1.介绍
主从一致性主要是通过 Percona-Toolkit 这个工具来实现的,Percona Toolkit 是一组高级的命令行工具,用来管理 MySQL 和系统任务,主要功能包括:
  • 验证主节点和复制数据的一致性
  • 有效的对记录进行归档
  • 找出重复的索引
  • 总结 MySQL 服务器
  • 从日志和 tcpdump 中分析查询
  • 问题发生时收集重要的系统信息。
现在,使用这个工具来完成一致性检查和数据同步。官网是:https://www.percona.com/software/mysql-tools/percona-toolkit
2.安装 Percona-Toolkit 工具
安装的方式有多种,可以编译安装,也可以通过包管理器安装,为了方便,直接下载 rpm 包,然后yum进行安装。
文件下载地址:https://www.percona.com/doc/percona-toolkit/2.2/installation.html
wget percona . com / get / percona - toolkit . rpmyum install percona - toolkit . rpm - y
3.一致性检查
3.1 注意点:
  • 需要创建一个既能登录主库,也能登录从库,而且还能同步数据库的帐号。
  • 只能指定一个host,必须为主库的IP
  • 在检查时会向表加S锁
  • 运行之前需要从库的同步IO和SQL进程是YES状态
3.2 创建检查帐号
mysql > grant select , process , super , replication slave on *.* to 'mysql_check' @ 'x.x.x.x' identified by '123456' ; mysql > flush privileges ;
3.3 执行检测(在master上操作)
pt - table - checksum -- nocheck - replication - filters -- databases = dy_qqopen -- replicate = test . checksums -- create - replicate - table -- host = 192.168 . 124.20 -- port 3306 - umysql_check - pLooking_s123 -- recursion - method = hosts
参数说明:
  • --nocheck-replication: 不检查复制过滤器,建议启动。后面可以用--databases来指定需要检查的数据库。
  • --databases:指定需要被检查的数据库,多个则用逗号隔开
  • --tables:指定需要被检查的标,多个用逗号隔开。
  • --replicate:把checksum的信息写入到指定表中,建议直接写到被检查的数据库当中。
  • --create-replicate-table:创建存放检查信息的数据表,第一次运行需要加,以后就不需要添加了。
  • --recursion-method:查找 Slave 的方式,有三种, processlist, dsn, hosts
  • h:Master地址
  • u:mysql的检测用户的用户名
  • p:mysql检测用户的密码
  • P:3306,mysql的端口号
执行结果:
参数说明:
  • TS: 完成检查的时间
  • ERRORS:检查时发生错误和警告的数量
  • DIFFS:0 表示一致,1 表示不一致,当指定 --no-replicate-check 时,会一直为0,当指定 --replicate-check-onley 则会显示不同的信息
  • ROWS:表的行数。
  • CHUNKS:被划分到表中的块的数目
  • SKIPPED:由于错误或警告过大,则跳过块的数目。
  • TIME:执行的时间。
  • TABLES:被检查的表名
说明:如果出现不一致的情况,就需要进行修复了。
3.4 命令错误
问题1:  执行命令时提示 "Diffs cannot be detected because no slaves were found. Please read the --recursion-method documentation for information."错误
解决方法:  在从服务器的  /etc/my.cnf  配置文件中添加两行, report_host=192.168.124.10(slave_ip) report_port=3306(slave_port) 。然后重启 MySQL 服务
4. 不一致数据修复
4.1 介绍
使用 pt-table-sync 这个命令来修复。 pt-table-sync 命令介绍:高效的同步 MySQL 表之间的数据,他可以做单向和双向的表数据。也可以同步单个表,也可以同步整个库。它不同步表结构、索引、或任何其他模式对象。所以在修复一致性之前需要保证他们表存在。
4.2 修复不一致的数据
pt - table - sync -- print -- user = mysql_check -- password = Looking_s123 h = 192.168 . 124.20 , D = dy_qqopen , t = qq_task h = 192.168 . 124.10
参数说明:
  • --print:打印出修复语句,如果需要修复,将 --print 改成 --execute,会直接执行修复语句,但是建议先使用 print 看一下修复语句,以保证不会出错。
  • --user:MySQL 检测用户的用户名
  • --password:MySQL 检测用户的密码
  • D:目标数据库
  • t:数据表
  • h:两个h,第一次出现的是 Master 的 IP ,第二次出现的是 Slave 的地址。

你可能感兴趣的:(数据库)