主從一致性檢查修復(fù)_第1頁
主從一致性檢查修復(fù)_第2頁
主從一致性檢查修復(fù)_第3頁
主從一致性檢查修復(fù)_第4頁
主從一致性檢查修復(fù)_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 主從一致性檢查已經(jīng)修復(fù)作者:zuoyuezong1 簡介:該軟件是由由領(lǐng)先的MySQL咨詢公司Percona發(fā)布的Percona的很多軟件我只能說是強!超越MYSQL 自身因此不用懷疑這個公司開發(fā)的軟件會不會帶來什么風(fēng)險pt-table-checksum是著名的percona-toolkit工 具集的工具之一。它通過在主庫執(zhí)行基于statement的sql語句來生成主庫數(shù)據(jù)塊的checksum,把相同的sql語句傳遞到從庫,并在從庫上計 算相同數(shù)據(jù)塊的checksum,最后,比較主從庫上相同數(shù)據(jù)塊的checksum值,由此判斷主從數(shù)據(jù)是否一致。這種校驗是分表進(jìn)行的,在每個表內(nèi)部又 是分塊進(jìn)行

2、的,而且pt工具本身提供了非常多的限流選項,因此對線上服務(wù)的沖擊較小2 環(huán)境主 38 rootmysql2 從40 rootdbserver1 3 安裝(1) .安裝相關(guān)依賴包:rootmysql2 opt# yum -y install perl-DBI perl-DBD-MySQL perl-TermReadKey(2) .安裝percona-toolkit可以rpm 方式也可以源代碼編譯我這里用源代碼編譯rootmysql2 opt# tar -xf percona-toolkit-2.2.2.tar.gz rootmysql2 per

3、cona-toolkit-2.2.2# perl Makefile.PLrootmysql2 percona-toolkit-2.2.2# make && make install 四:授權(quán)主機(jī)mysql 上授權(quán)mysql> GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE ON *.* TO 'opt''38' IDENTIFIED BY '123'Query OK, 0 rows affected (0.03 sec)mysql> flush

4、privileges;Query OK, 0 rows affected (0.00 sec)5 檢測rootmysql2 local# pt-table-checksum h='38',u='opt',p='123',P=3306 -d lisi -nocheck-replication-filters -no-check-binlog-format -replicate=test.wocaoDiffs cannot be detected because no slaves were found. Please re

5、ad the -recursion-method documentation for information. TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE07-20T18:41:58 0 0 655360 10 0 4.498 lisi.bookChecksumming lisi.haowutest: 52% 00:27 remainChecksumming lisi.haowutest: 92% 00:04 remain07-20T18:43:05 0 0 7676940 70 0 66.694 lisi.haowutest07-20T18:

6、43:05 0 0 2 1 0 0.118 lisi.j07-20T18:43:05 0 0 2 1 0 0.099 lisi.l07-20T18:43:05 0 0 0 1 0 0.145 lisi.lisi07-20T18:43:05 0 0 3 1 0 0.134 lisi.o07-20T18:43:05 0 0 0 1 0 0.057 lisi.wanger07-20T18:43:06 0 0 7 1 0 0.166 lisi.wanger107-20T18:43:06 0 0 0 1 0 0.144 lisi.ww07-20T18:43:06 0 0 38 1 0 0.171 lis

7、i.yb_account_log07-20T18:43:06 0 0 35 1 0 0.059 lisi.yb_ad07-20T18:43:06 0 0 0 1 0 0.066 lisi.yb_ad_custom07-20T18:43:06 0 0 28 1 0 0.172 lisi.yb_ad_position07-20T18:43:06 0 0 109 1 0 0.076 lisi.yb_admin_action07-20T18:43:06 0 0 9587 1 0 0.182 lisi.yb_admin_log在這里還引申出了一個知識點我本來想在從上刪除lisi.haowutest表的一

8、部分?jǐn)?shù)據(jù) 然后跳過錯誤 再做一次檢查 既然發(fā)現(xiàn)他妹的 slave_skip_errors =1045 沒有用 這是怎么回事呢原來myql 表授權(quán)表變了 rootdbserver1 data# cat 所以我建議mysql數(shù)據(jù)庫還是不要同步的好 省的發(fā)生亂起八糟 不可思議的問題實驗繼續(xù)現(xiàn)在haowu.test表數(shù)據(jù)時不一致的情況下檢測rootmysql2 data# pt-table-checksum h='38',u='opt',p='123',P=3306 -d lisi -nocheck-re

9、plication-filters -no-check-binlog-format -replicate=test.wocao TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE07-20T21:04:44 0 0 655360 10 0 7.600 lisi.bookChecksumming lisi.haowutest: 74% 00:10 remain07-20T21:05:28 0 1 7676940 58 0 43.484 lisi.haowutest07-20T21:05:28 0 0 2 1 0 0.069 lisi.j07-20T21:

10、05:28 0 0 2 1 0 0.061 lisi.l07-20T21:05:28 0 0 0 1 0 0.083 lisi.lisi07-20T21:05:28 0 0 3 1 0 0.063 lisi.o07-20T21:05:28 0 0 0 1 0 0.074 lisi.wanger07-20T21:05:28 0 0 7 1 0 0.064 lisi.wanger107-20T21:05:28 0 0 0 1 0 0.063 lisi.ww07-20T21:05:28 0 0 38 1 0 0.070 lisi.yb_account_log07-20T21:05:28 0 0 35

11、 1 0 0.071 lisi.yb_ad07-20T21:05:28 0 0 0 1 0 0.143 lisi.yb_ad_custom07-20T21:05:29 0 0 28 1 0 0.065 lisi.yb_ad_position07-20T21:05:29 0 0 109 1 0 0.039 lisi.yb_admin_action07-20T21:05:29 0 0 9587 1 0 0.375 lisi.yb_admin_log可以看出lisi.haowutest 有記錄數(shù)不一致 上去看看是不是這樣rootmysql2 data# mysql -phaowu123mysql&g

12、t; select count(*) from lisi.haowutest;+-+| count(*) |+-+| 7676940 |+-+1 row in set (10.35 sec)rootdbserver1 data# mysql -phaowu123mysql> select count(1) from lisi.haowutest;+-+| count(1) |+-+| 7676632 |+-+1 row in set (7.22 sec)果然不一致6 修復(fù)rootmysql2 data# pt-table-sync -print -sync-to-master h=192

13、.168.186.140,D=lisi,t=haowutest -uopt -p123 查看下解釋:pt-table-sync -print -sync-to-master h=,D=test,t=test1 -uxxx -p123(其中這個xxx用戶密碼要機(jī)能登錄到master也能登錄到slave,需要的權(quán)限select,super,replication client,process) 修復(fù)從庫上test庫的test表上的數(shù)據(jù) 如果把-print換成-execute則是直接執(zhí)行  建議先用-print保存下看看再-exec

14、ute  這樣看到sql執(zhí)行比較放心可以打開gengral log很容易看到master和slave上執(zhí)行的操作,分別去一段段的數(shù)據(jù)做對比校驗 ,有不同的立刻用replace into在master去執(zhí)行rootmysql2 data# pt-table-sync -execute -sync-to-master h=40,D=lisi,t=haowutest -uopt -p123 這就是修復(fù)了話雖如此但是要是不行的話 還是在兩邊都授個全部權(quán)限吧mysql> grant all on *.* to we'%' identified b

15、y '123'Query OK, 0 rows affected (0.03 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)mysql> qByerootmysql2 data# pt-table-sync -execute -sync-to-master h=38,h=40,D=lisi,t=haowutest -uwe -p123OK 至此結(jié)束rootdbserver1 data# mysql -phaowu123mysql>

16、; select count(*) from lisi.haowutest;+-+| count(*) |+-+| 7676940 |+-+1 row in set (7.25 sec)rootmysql2 data# mysql -phaowu123mysql> select count(*) from lisi.haowutest;+-+| count(*) |+-+| 7676940 |+-+1 row in set (7.25 sec)修復(fù)完成7 命令詳解不指定任何參數(shù),會直接對本地的所有數(shù)據(jù)庫的表進(jìn)行檢查。pt-table-checksum S /tmp/mysqld.sock

17、 u=root,p=123456注意:1、  根據(jù)測試,需要一個既能登錄主庫,也能登錄從庫,而且還能同步數(shù)據(jù)庫的賬號;2、  只能指定一個host,必須為主庫的IP;3、  在檢查時會向表加S鎖;4、  運行之前需要從庫的同步IO和SQL進(jìn)程是YES狀態(tài)。GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE ON *.* TO checksumsx.x.x.x IDENTIFIED BY xxxx;執(zhí)行檢測(MASTER上):pt-table-checksum -nocheck-replication-filte

18、rs -replicate=test.checksum -databases=test h=35,u=root,p=123 -empty-replicate-table -create-replicate-table TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE09-18T12:03:16 0 1 5 1 0 0.018 test.t1參數(shù)說明:TS            :完成檢查的時間。ERRORS 

19、       :檢查時候發(fā)生錯誤和警告的數(shù)量。DIFFS         :0表示一致,1表示不一致。當(dāng)指定-no-replicate-check時,會一直為0,當(dāng)指定-replicate-check-only會顯示不同的信息。ROWS          :表的行數(shù)。CHUNKS        :被劃分到表中的塊的數(shù)目。SKIPPED       :由于錯誤或警告或過大,則跳過塊的數(shù)目。TIME          :執(zhí)行的時間。TABLE        

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論