阅读104 返回首页    go 阿里云 go 技术社区[云栖]


【bug】发现pt-table-checksum bug例子

发现pt-table-checksum bug例子

一.起因
由于全公司在组织学习MySQL。正在学到MySQL安装、 复制这一块,我的霸道总裁突然霸气十足的问我 ‘’你如何检测主从不一致呢‘’,我回答说 当然是
pt-table-checksum
,从而引出了下文.
二.描述
MySQL5.7 主从环境
percona-toolkit-2.2.20-1.noarch
创建了一个test_xx的库
root@localhost:mysql.sock [(none)]>create database test_xx;
Query OK, 1 row affected (0.01 sec)

创建表

| aa    | CREATE TABLE `aa` (
  `id` int(11) NOT NULL,
  `name` varchar(10) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

插入数据
"root@localhost:mysql.sock [test_xx]>insert into aa values(1,'a'),(4,'a');
从库删除数据

"root@localhost:mysql.sock  [test_xx]>delete from aa;
Query OK, 2 rows affected (0.01 sec)

执行pt语句校队

[root@localhost ~]# pt-table-checksum  --no-check-binlog-format --replicate=pt.cheksum --databases=test_xx  -h 192.168.230.132 -u aa -predhat -P 3306   --recursion-method='processlist'

我的霸道总裁就喊我了 快来给我看看 。只能放下手里的砖先,开开心心的过去。
三 排错
开始以为是我的参数问题,各种调试。霸道总裁在旁边坐着好紧张QAQ 过了10分钟 还是没搞定。 霸道总裁突然说是不是**_**(下划线)问题呢。 去除**_**(下划线)重新创建库 插入表 插入数据 从库删除数据 还是不好使。。。 淡淡的忧伤 今天果然运气不好啊。 突然机智的总裁说 是不是 数据库的名字有长度限制呢。这就给了我一丝希望 就安装霸道总裁的意思 创建库名casdfdsfsf 创建表 插入数据 从库删除数据 结果好用了 好神奇 突然感觉世界都亮了。
我的霸道总裁告诉我 会不会是 因为test或者_的原因呢。经过各种 创建库 创建表 插入数据 从库删数据 等等操作。。
结果发现 机智的霸道总裁的结论的是对的 因为有test开头。 霸道总裁有没有好机智, 是不是快爱上霸道总裁了。
然后通过阅读pt-table-checksum 的代码 发现 代码7617行

if ( $db =~ m/information_schema|performance_schema|lost\+found|percona|percona_schema|test/ ) {

在percona-toolkit-3.0.3 已经修复了

if ( $db =~ m/^(information_schema|performance_schema|lost\+found|percona_schema)$/ ) {

在/usr/bin/pt-table-checksum 中修复

   if ( $db =~ m/information_schema|performance_schema|lost\+found|percona|percona_schema/ ) {

[root@localhost ~]# pt-table-checksum  --no-check-binlog-format --replicate=pt.cheksum --databases=test_xx  -h 192.168.230.132 -u aa -predhat -P 3306   --recursion-method='processlist'
            TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE
09-08T10:48:15      0      1        2       1       0   0.044 test_xx.aa

四总结
知其然也要知其所以然,发现问题 不要方 。要养成阅读代码的习惯。

最后更新:2017-09-08 23:02:32

  上一篇:go  零基础进行神经网络语言建模
  下一篇:go  【CDN 最佳实践】CDN访问异常排查思路