溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

percona-toolkit之pt-table-sync

發(fā)布時(shí)間:2020-07-16 22:30:25 來(lái)源:網(wǎng)絡(luò) 閱讀:369 作者:面向_陽(yáng)光 欄目:MySQL數(shù)據(jù)庫(kù)

通過(guò)上面pt-table-checksums找到了這些不一致的數(shù)據(jù)表
(https://blog.51cto.com/li02yu/2340403)
,如何同步數(shù)據(jù)呢?即如何修復(fù)MySQL主從不一致的數(shù)據(jù),讓他們保持一致性呢?利用另外一個(gè)工具 pt-table-sync。
使用方法:

pt-table-sync [OPTIONS] DSN [DSN]

pt-table-sync: 高效的同步MySQL表之間的數(shù)據(jù),他可以做單向和雙向同步的表數(shù)據(jù)。他可以同步單個(gè)表,也可以同步整個(gè)庫(kù)。它不同步表結(jié)構(gòu)、索引、或任何其他模式對(duì)象。所以在修復(fù)一致性之前需要保證他們表存在。

通過(guò)(--print)打印出來(lái)修復(fù)一個(gè)表數(shù)據(jù)的sql語(yǔ)句

[lxh@MySQL-01 ~]# pt-table-sync --print --databases=test --table=test1  --sync-to-master h='172.31.153.164',u='lxh',p='Mysql.163',P=3306

通過(guò)(--print)打印出來(lái)修復(fù)一個(gè)庫(kù)數(shù)據(jù)的sql語(yǔ)句

[lxh@MySQL-01 ~]# pt-table-sync --print --databases=test  --sync-to-master h='172.31.153.164',u='lxh',p='Mysql.163',P=3306

通過(guò)(--print)打印出來(lái)修復(fù)所有數(shù)據(jù)庫(kù)的sql語(yǔ)句(不建議這樣使用)

[lxh@MySQL-01 ~]# pt-table-sync --print  --sync-to-master h='172.31.153.164',u='lxh',p='Mysql.163',P=3306
參數(shù)的意義:
復(fù)制代碼

--replicate=  :指定通過(guò)pt-table-checksum得到的表,這2個(gè)工具差不多都會(huì)一直用。不指定,則使用默認(rèn)的
--databases=  : 指定執(zhí)行同步的數(shù)據(jù)庫(kù),多個(gè)用逗號(hào)隔開(kāi)。
--tables=     :指定執(zhí)行同步的表,多個(gè)用逗號(hào)隔開(kāi)。
--sync-to-master :指定一個(gè)DSN,即從的IP,他會(huì)通過(guò)show processlist或show slave status 去自動(dòng)的找主。
h=172.31.153.164   :服務(wù)器地址,Slave的地址。
u=lxh        :帳號(hào)。
p=Mysql.163      :密碼。

--print       :打印,但不執(zhí)行命令。
--execute     :執(zhí)行命令。

一起解釋下執(zhí)行的效果:通過(guò)(--print)打印出來(lái)了修復(fù)數(shù)據(jù)的sql語(yǔ)句,可以手動(dòng)的去從行執(zhí)行,讓他們數(shù)據(jù)保持一致性。那能否直接執(zhí)行?當(dāng)然可以,通過(guò)(--execute)

[lxh@MySQL-01 ~]# pt-table-sync h=172.31.153.164,u=lxh,p=Mysql.163  --execute

沒(méi)發(fā)現(xiàn)任何異常,然后檢查主從數(shù)據(jù)的一致性:

[lxh@MySQL-01 ~]# pt-table-checksum -u'lxh' -p'Mysql.163' -h272.31.153.163   --databases=test  --nocheck-binlog-format --nocheck-plan --nocheck-replication-filters  --recursion-method=processlist 
            TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE
04-13T16:27:28      0      0        3       1       0   0.097 test.test1

OK,數(shù)據(jù)已經(jīng)保持一致了。不過(guò)建議還是用--print 打印出來(lái)的好,這樣就可以知道那些數(shù)據(jù)有問(wèn)題,可以人為的干預(yù)下。不然直接執(zhí)行了,出現(xiàn)問(wèn)題之后更不好處理??傊€是在處理之前做好數(shù)據(jù)的備份工作。

注意:要是表中沒(méi)有唯一索引或則主鍵則會(huì)報(bào)錯(cuò):

Can't make changes on the master because no unique index exists at /usr/local/bin/pt-table-sync line 10591.
需要給表添加主鍵或唯一索引即可
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI