閱讀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訪問異常排查思路