校驗工具介紹:html
1. mysql管理工具 maatkit, 包含如下主要工具:mysql
mk-table-checksum 檢查主從表是否一致的有效工具linux
mk-table-sync 沒必要重載從表而可以保證一致,打印、修復兩個表之間不一致的記錄。算法
mk-visual-explainexlpain解釋工具sql
mk-heartbeat 主從同步的監視工具,可以給出從落後於主多少數據庫
mk-parallel-dump 多線程的mysqldump工具服務器
mk-parallel-restore 多線程的表回覆工具多線程
mk-query-profiler 查詢檢測分析工具ide
mk-deadlock-logger 死鎖的記錄工具,支持innodb函數
mk-duplicate-key-checker key偵測工具
mk-show-grants 權限管理顯示工具
mk-slave-restart slave的檢測和重啓工具
mk-slave-delay slave delay replication 的工具
2. 校驗環境主要使用工具:
MK-table-checksum
用於對比一個服務器上不一樣庫之間的數據,也可用於對比多個服務器上數據庫之間的數據;可對在線的replication進行一致性檢查。比較方法有三種,函數也能夠自選。
MK-checksum-filter
用於對mk-table-checksum產生的結果作過濾,並輸出不一樣的結果集
詳細可參考:http://www.maatkit.org/doc/mk-table-checksum.html3.
3. Maatkit工具包安裝:
必備依賴包:yum install perl-DBI perl-DBD-MySQL perl-TermReadKey perl-Time-HiRes
#wget ftp://rpmfind.net/linux/epel/6/x86_64/maatkit-7332-1.el6.noarch.rpm
#rpm -ivh /tmp/dbbak/maatkit-7332-1.el6.noarch.rpm
校驗目的:
mysql主從同步後,按期檢查數據同步的一致性。
校驗方法:
mk-table-checksum h=x.x.x.x,u=user1,p=xxx h=x.x.x.x,u=user1,p=xxx -d test
h校驗的數據庫服務器地址u 賬號p 密碼
-d 需校驗的數據庫
-t 需校驗的表
例:測試兩臺數據庫服務器中的test庫是否一致
Checksum的值可判斷錶行是否一致(其輸出結果的checksum數值非行數)。
Checksum算法原理:把要發送的數據當作二進制整數序列,並計算他們的和。若數據字節長度爲奇數,則在數據尾部補一個字節的0以湊成偶數。爲了計算效驗和,發送計算機把每對字符當成16位整數處理並計算效驗和。若是效驗和大於16位,那麼把進位一塊兒加到最後的效驗和中。
如上圖127.0.0.1與192.168.1.11的checksum值徹底相等,兩臺數據庫數據一致。
輸出項說明:
DATABASE:數據庫名
TABLE:表名
CHUNK:checksum時的近似數值
HOST:MYSQL的地址
ENGINE:表引擎
COUNT:表的行數
CHECKSUM:校驗值
TIME:所用時間
WAIT:等待時間
STAT:MASTER_POS_WAIT()返回值
LAG:slave的延時時間
若是想過濾出不相等的都有哪些表,能夠用mk-checksum-filter這個工具,經過管道使用
mk-table-checksum h=x.x.x.x,u=user1,p=xxx h=x.x.x.x,u=user1,p=xxx -d test|mk-checksum-filter
過濾出不相等的表.
注:mysql版本不一致,配置環境不一樣都有可能致使兩臺數據庫校驗結果不一致。