percona之pt-table-checksum介绍
来源:互联网 发布:rds mysql 慢 编辑:程序博客网 时间:2024/06/05 07:14
功能介绍:
检查mysql复制一致性
工作原理:
通过在主服务器上运行pt-table-checksum,它会通过一系列的MySQL函数计算每个表的散列值,利用主从复制关系,把同样的计算过程在从服务器上重放,从而就拿到了主从服务器各自的散列值,只要比较散列值是否相同就OK了。
注意:使用的时候选择业务地峰的时候运行,因为运行的时候会造成表的部分记录锁定。使用--max-load
来指定最大的负载情况,如果达到那个负载这个暂停运行。如果发现有不一致的数据,可以使用pt-table-sync工具来修复。
使用说明
shell> pt-table-checksum [OPTIONS] [DSN]详情可参考shell> pt-table-checksum --help常用参数:--nocheck-replication-filters :不检查复制过滤器,建议启用。后面可以用--databases来指定需要检查的数据库。--no-check-binlog-format : 不检查复制的binlog模式。--replicate-check-only :只显示不同步的信息。--replicate= :指定checksum的信息写入的表。--databases= :指定需要被检查的数据库,多个则用逗号隔开。--tables= :指定需要被检查的表,多个用逗号隔开--chunk-size=z: 指定每个校验查询的行数,默认为1000 --function=s :指定校验的哈希函数(FNV1A_64,MURMUR_HASH, SHA1, MD5, CRC32, etc)
安装使用
主从配置一致
shell> tar -zxvf percona-toolkit-2.2.9.tar.gz shell> perl Makefile.PLshell> make && make install[master]mysql> GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE ON *.* TO 'svoid'@'localhost' IDENTIFIED BY '123qwe';shell> pt-table-checksum h='127.0.0.1',u='svoid',p='123qwe',P=3306 -d db_test --nocheck-replication-filters--replicate=test.checksums --no-check-binlog-format# 2 software updates are available:# * The current version for MySQL Community Server (GPL) is 5.5.40.# * The current version for Percona::Toolkit is 2.2.11. TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE01-07T17:37:22 0 0 0 1 0 0.005 test.bookinfo01-07T17:37:24 0 1 147378 4 0 1.581 test.t01-07T17:37:24 0 0 1762 1 0 0.258 test.userTS :完成检查的时间。ERRORS :检查时候发生错误和警告的数量。DIFFS :0表示一致,1表示不一致。当指定--no-replicate-check时,会一直为0,当指定--replicate-check-only只显示数据不一致的信息。ROWS :表的行数。CHUNKS :被划分到表中的块的数目。SKIPPED :由于错误或警告或过大,则跳过块的数目。TIME :执行的时间。TABLE :被检查的表名。mysql> select * from checksums limit 1 \G;*************************** 1. row *************************** db: test tbl: bookinfo chunk: 1 chunk_time: 0.005444 chunk_index: NULLlower_boundary: NULLupper_boundary: NULL this_crc: 2d51c233 #从库 this_cnt: 1 #从库 master_crc: 2d51c233 #主库 master_cnt: 1 #主库 ts: 2015-01-07 17:37:221 row in set (0.00 sec)
主从配置不一致
mysql> CREATE TABLE `dsns` ( > `id` int(11) NOT NULL AUTO_INCREMENT, > `parent_id` int(11) DEFAULT NULL, > `dsn` varchar(255) NOT NULL, > PRIMARY KEY (`id`) );Query OK, 0 rows affected (0.06 sec)# 写入从库信息,可指定多条mysql> INSERT INTO dsns (parent_id,dsn) values(1, "h=192.168.1.251,u=root,p=oracle,P=3308"); Query OK, 1 row affected (0.01 sec)mysql> select * from test.dsns;+----+-----------+-------------------------------------+| id | parent_id | dsn |+----+-----------+-------------------------------------+| 1 | 1 | h=192.168.1.251,u=svoid,p=123qwe,P=3308 |+----+-----------+-------------------------------------+1 row in set (0.00 sec)# 运行pt-table-checksumshell> pt-table-checksum h='127.0.0.1',u='svoid',p='123qwe',P=3307 -d bbb,book --nocheck-replication-filters --replicate=test.checksums --recursion-method=dsn=h=192.168.1.251,D=test,t=dsns TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE01-08T01:22:46 0 1 4 1 0 0.074 bbb.eq01-08T01:22:46 0 1 4 1 0 0.021 bbb.eqs01-08T01:22:46 0 1 4 1 0 0.016 bbb.mas01-08T01:22:46 0 1 4 1 0 0.013 bbb.sla01-08T01:22:46 0 1 3 1 0 0.012 bbb.t01-08T01:22:46 0 0 3 1 0 0.013 book.bookinfo01-08T01:22:46 0 0 0 1 0 0.014 book.test_memory# 统计主从不一致的表从库运行mysql> SELECT db, tbl, SUM(this_cnt) AS total_rows, COUNT(*) AS chunks FROM test.checksums > WHERE ( master_cnt <> this_cnt OR master_crc <> this_crc OR ISNULL(master_crc) <> ISNULL(this_crc))> GROUP BY db, tbl;+-----------+------------+------------+--------+| db | tbl | total_rows | chunks |+-----------+------------+------------+--------+| bbb | eq | 4 | 1 || bbb | eqs | 4 | 1 || bbb | mas | 4 | 1 || bbb | sla | 4 | 1 || bbb | t | 3 | 1 |+-----------+------------+------------+--------+5 rows in set (0.01 sec)
整理自网络
Svoid
2015-01-08
0 0
- percona之pt-table-checksum介绍
- percona-toolkit 之 【pt-table-checksum】、【pt-table-sync】说明
- percona-toolkit 之 【pt-table-checksum】、【pt-table-sync】说明
- percona-toolkit 之 【pt-table-checksum】、【pt-table-sync】说明
- percona-toolkit工具之pt-table-checksum使用
- percona之pt-table-sync介绍
- percona之pt-heartbeat介绍
- percona-toolkit pt-table-checksum和pt-table-sync的使用方法
- pt-table-checksum
- pt-table-checksum使用说明
- pt-table-checksum
- pt-table-checksum
- pt-table-checksum安装
- pt-table-checksum 使用方法
- percona之pt-query-digest介绍
- 使用pt-table-checksum及pt-table-sync校验复制一致性详细介绍
- pt-table-checksum 中文使用说明
- pt-table-checksum使用实践
- 详解System.Data 命名空间
- 基于Mysql Connector(C++)的数据库连接池的实现
- nginx的4个学习资料
- Android静态传参数(五)
- C# FTP操作类
- percona之pt-table-checksum介绍
- 逃出你的肖申克(一):为什么一定要亲身经历了之后才能明白?笔记
- android AVD(模拟器)create里找不到snapshot
- Objective-C基础学习笔记(二)-面向对象与面向过程的两种思想
- MySQL监控工具之mytop
- Apache OFBIZ快速上手(三)--目录&&配置文件介绍
- 求两个值的最大公约数
- 关于asp.net前台js调用后台方法的问题
- sysbench 0.5 性能测试工具