pt-table-checksum MySQL主从服务器数据一致性的核对与修复
来源:互联网 发布:php 数组删除尾部元素 编辑:程序博客网 时间:2024/06/05 09:43
一篇好文章,记录保存一下以后备用!
Percona Toolkit里的pt-table-checksum和pt-table-sync可以搞定此类问题。它们的安装很简单,可以依照自己的操作系统选择下载rpm或者deb软件包来安装,当然也可以使用源代码来安装,不过要注意的是,必须确保系统已经安装了依赖的Perl软件包:
- shell> perl -MCPAN -e 'install DBI'
- shell> perl -MCPAN -e 'install DBD::mysql'
- shell> perl -MCPAN -e 'install Term::ReadKey'
顺便说一下,我在安装某些Perl模块的时候,出现类似下面的错误提示:
- Can’t locate object method “install” via package “…”
如果你也遇到了类似的问题,可以进入到Perl命令行安装:
- shell> perl -MCPAN -e shell
- cpan> install ...
安装Percona Toolkit的剩余步骤就是Perl软件的固定打法了:
- shell> perl Makefile.PL
- shell> make
- shell> make install
前戏进行到这里应该可以了,下面让我们直捣黄龙,看看如何解决问题:
MySQL主从服务器数据一致性的核对
通过在主服务器上运行pt-table-checksum,它会通过一系列的MySQL函数计算每个表的散列值,利用主从复制关系,把同样的计算过程在从服务器上重放,从而就拿到了主从服务器各自的散列值,只要比较散列值是否相同就OK了。
这里面有两点需要说明:
计算表的散列值时,pt-table-checksum并不是直接计算整个表的散列值,而是分块计算,这样就避免了造成从服务器长时间的延迟。
因为通过MySQL函数计算散列的过程需要在从服务器上重放,所以主从复制的格式必须是基于STATEMENT的,不能是基于ROW的。
实际操作时的命令大致如下:
- shell> pt-table-checksum \
- --replicate=percona.checksums \
- --host=<MASTER_HOST> \
- --user=<MASTER_USER> \
- --password=<MASTER_PASSWORD>
说明:replicate选项指定了结果保存到哪个库和表中,如果你愿意,可以手动查询:
- SELECT db, tbl, SUM(this_cnt) AS total_rows, COUNT(*) AS chunks
- FROM percona.checksums
- WHERE (
- master_cnt <> this_cnt
- OR master_crc <> this_crc
- OR ISNULL(master_crc) <> ISNULL(this_crc))
- GROUP BY db, tbl;
BTW:多数情况下,只要比较「master_crc <> this_crc」就可以了。
MySQL主从服务器数据一致性的修复
通过在主服务器上运行pt-table-sync,它会重建数据,数据通过复制从主服务器同步到从服务器,从而修复了一致性,在操作过程中,可以利用pt-table-checksum的结果。
- shell> pt-table-sync \
- --execute \
- --replicate=percona.checksums \
- --charset=<CHARSET> \
- --host=<MASTER_HOST> \
- --user=<MASTER_USER> \
- --password=<MASTER_PASSWORD>
说明:因为pt-table-sync会重建数据,所以有一定的风险,最好提前备份好数据。如果仍然不放心,可以使用它提供的「print」选项,它会打印出相应的SQL,你可以审查一下到底执行了那些操作,然后通过手动执行来完成同步。
本文例子中,我们为了方便,在运行Percona Toolkit命令的时候直接键入了密码等敏感信息,这在很多时候是不安全的,比如说别人可以通过查看命令历史拿到密码。还好我们有「ask-pass」选项可以解决此类问题,实际上我们还可以更进一步,直接把密码等敏感信息保存到配置文件中,最容易想到的配置文件是「~/.my.cnf」,此外,还有几个更官方的配置文件可供选择,我们可以在源代码里看到它们的踪影:
- default_files => [
- "/etc/percona-toolkit/percona-toolkit.conf",
- "/etc/percona-toolkit/$program_name.conf",
- "$home/.percona-toolkit.conf",
- "$home/.$program_name.conf",
- ]
- …
- pt-table-checksum MySQL主从服务器数据一致性的核对与修复
- MySQL主从服务器数据一致性的核对与修复
- MySQL主从服务器数据一致性的核对与修复
- pt-table-checksum- 主从MySQL数据一致性校验
- MySQL 使用pt-table-checksum 检查主从数据一致性
- 主从数据一致性检查修复工具pt-table-checksum,pt-table-sync使用
- pt-table-checksum校验mysql数据一致性
- pt工具:pt-table-checksum与pt-table-sync修复主从不一致
- mysql主从一致性检查以及修复(pt-table-checksum和pt-table-sync工具)
- 使用pt-table-checksum进行主从数据一致性比对
- 验证MySQL主从一致性(pt-table-checksum&pt-table-sync)
- 利用mk-table-checksum监测Mysql主从数据一致性操作记录
- 使用pt-table-checksum和pt-table-sync工具验证和修复主从数据不一致问题
- 使用pt-table-checksum校验MySQL主从复制
- pt-table-checksum主从一致性校验工具
- pt-table-checksum数据一致性校验工具和pt-table-sync数据同步工具解析
- pt-table-checksum
- pt-table-checksum使用说明
- 【玩转cocos2d-x之一】V2.2.0版本开发环境配置
- 【原创】安卓生活小助手下载
- ORACLE导入dmp文件记录
- XML讲义-20131009
- 2014宇龙酷派校招西安java类笔试题(热乎的,还冒烟呢)
- pt-table-checksum MySQL主从服务器数据一致性的核对与修复
- 保利威视视频云平台 新版本(Version 1.1.0) 上线通知
- U盘制作WINDOWS、LINUX系统引导盘
- VC-监视程序的编制
- oracle在linunx下的卸载。
- Android为ListView的Item设置不同的布局
- 在std库中 cout<< 是右结合的
- Qt之360资料收集
- 数据结构中各种内部排序算法的比较