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 的地址。
本文介绍如何使用Percona Toolkit工具实现MySQL主从库的一致性检查与数据同步,并详细解释了安装过程、检查步骤及修复不一致数据的方法。
853

被折叠的 条评论
为什么被折叠?



