打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
mysql之percona
userphoto

2012.12.03

关注
标签mysql 分类: mysql


percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括:
  1. 检查masterslave数据的一致性
  2. 有效地对记录进行归档
  3. 查找重复的索引
  4. 对服务器信息进行汇总
  5. 分析来自日志和tcpdump的查询
  6. 当系统出问题的时候收集重要的系统信息
 
    percona-toolkit源自Maatkit Aspersa工具,这两个工具是管理mysql的最有名的工具,现在Maatkit工具已经不维护了,请大家还是使用percona-toolkit吧!这些工具主要包括开发、性能、配置、监控、复制、系统、实用六大类,如果能掌握并加以灵活应用,将能极大的提高工作效率。
 
安装环境如下:centos 5.5 64位,已经编译安装了mysql5.5.18。
主IP为10.1.1.191,从为10.1.1.192
安装过程:

  1. yum -y install perl-DBI perl-DBI-MySQL
  2. wget http://www.percona.com/redir/downloads/percona-toolkit/2.1.7/percona-toolkit-2.1.7.tar.gz
  3. tar zxf percona-toolkit-2.1.7.tar.gz
  4. perl Makefile.PL
  5. make
  6. make install
 
主从数据一致性检测工具:

pt-table-checksum
 
pt-table-checksum是一个在线验证主从数据一致性的工具,主要用于以下场景:
1. 数据迁移前后,进行数据一致性检查
2. 当主从复制出现问题,待修复完成后,对主从数据进行一致性检查
3. 把从库当成主库,进行数据更新,产生了"脏数据"
4. 定期校验

  1. 用法介绍:
  2. pt-table-checksum [OPTION...] [DSN]
  3. 参数解释
  4. DSN h='192.168.250.249',u='checksums',p='xxxx',P=3306
  5. -d
  6. 指定校验的库,多个库用逗号(,)分隔
  7. --nocheck-replication-filters
  8. 忽略replication-do-db规则
  9. --replicate=test.checksums
  10. 在test库下创建checksums表,并将数据写入
  11. --recursion-method=none
  12. 指定复制检查的方式,默认情况下使用SHOW PROCESSLIST,如果非标准的3306端口,就使用SHOW SLAVE HOSTS的方式,推荐使用dsn方式,手动指定
为了测试效果,将主从表的数据改的不一致:


  1. 主上:
  2. select * from a;
  3. +------+
  4. | b |
  5. +------+
  6. | 3 |
  7. +------+

  8. 从上:
  9. select * from a;
  10. +------+
  11. | b |
  12. +------+
  13. | 2 |
  14. +------+

然后使用pt-table-checksum测试效果:


  1. pt-table-checksum --nocheck-replication-filters --databases=wang --replicate=test.checksums --host=10.1.1.191 --port 3306 -utest -p123456 --no-check-binlog-format
  2. TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE
  3. 11-22T18:09:43 0 1 1 1 0 0.264 wang.a
  4. 11-22T18:09:43 0 0 1 1 0 0.012 wang.b


从结果可以看出diffs值为1。说明wang库的a表数据不一致。
暂时先到这里,下次再测试使主从数据一致的工具:
pt-table-sync

拖了好多天了,今天补上:


 

  1. 用法介绍:
  2. pt-table-sync [OPTION...] DSN [DSN...]
  3. 参数解释
  4. DSN h='192.168.250.249',u='checksums',p='xxxx',P=3306
  5. 原理:总是在主上执行数据的更改,再同步到从上,不会直接更改成从的数据,在主上执行更改是基于主上现在的数据,不会更改主上的数据。注意使用之前先备份你的数据,避免造成数据的丢失.执行execute之前最好先换成--print或--dry-run查看一下会变更哪些数据。

 

首先修改主从数据,使他们不一致:

  1. 主:
  2. root@wang 10:25>select * from a;
  3. +-----+------+
  4. | id | b |
  5. +-----+------+
  6. | 2 | 3 |
  7. | 4 | 4 |
  8. | 200 | 100 |
  9. +-----+------+

  10. 从:
  11. root@wang 10:29>select * from a;
  12. +-----+------+
  13. | id | b |
  14. +-----+------+
  15. | 2 | 3 |
  16. | 4 | 4 |
  17. | 200 | 2000 |
  18. +-----+------+


然后执行pt-table-sync --print查看一下变更。

  1. pt-table-sync --print -utest -p123456 --sync-to-master h=10.1.1.192,D=wang,t=a
  2. REPLACE INTO `wang`.`a`(`id`, `b`) VALUES ('200', '100') /*percona-toolkit src_db:wang src_tbl:a src_dsn:D=wang,P=3306,h=10.1.1.191,p=...,t=a,u=test dst_db:wang dst_tbl:a dst_dsn:D=wang,h=10.1.1.192,p=...,t=a,u=test lock:1 transaction:1 changing_src:1 replicate:0 bidirectional:0 pid:3481 user:root host:nginx1*/;


然后执行同步修复

  1. pt-table-sync --execute -utest -p123456 --sync-to-master h=10.1.1.192,D=wang,t=a

然后查看主从数据:

  1. 主:
  2. root@wang 10:39>select * from a;
  3. +-----+------+
  4. | id | b |
  5. +-----+------+
  6. | 2 | 3 |
  7. | 4 | 4 |
  8. | 200 | 100 |
  9. +-----+------+

  10. 从:
  11. root@wang 10:40>select * from a;
  12. +-----+------+
  13. | id | b |
  14. +-----+------+
  15. | 2 | 3 |
  16. | 4 | 4 |
  17. | 200 | 100 |
  18. +-----+------+



PS:如果表没有唯一索引或者主键就无法使用了。

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
percona
MySQL优化—工欲善其事,必先利其器(2)
MySQL 8.0与MariaDB 10.4,谁更易于填坑补锅?
SQL Server数据导出到Oracle的方案
PowerDesigner逆向工程生成PDM模型及数据库
PostgreSQL逻辑复制之pglogical篇
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服