1. 程式人生 > >28. pt-table-sync

28. pt-table-sync

 

前提:得有checksum表


pt-table-sync --replicate=pt.checksum \
h=192.168.100.101,P=3306,u=admin,p=admin \
h=192.168.100.102,P=3306,u=admin,p=admin \
h=192.168.100.103,P=3306,u=admin,p=admin \
--print --execute


第一行地址是master
第二行地址是slave1
如果有第三行地址,那是slave2
如果只有master的地址,那麼會把所有slave都修復


--replicate= :指定通過pt-table-checksum得到的表,這2個工具差不多都會一直用。
--databases= : 指定執行同步的資料庫,多個用逗號隔開。
--tables= :指定執行同步的表,多個用逗號隔開。
--sync-to-master :指定一個DSN,即從的IP,他會通過show processlist或show slave status 去自動的找主。
h=127.0.0.1 :伺服器地址,命令裡有2個ip,第一次出現的是Master的地址,第2次是Slave的地址。
u=root :帳號。
p=123456 :密碼。
--print :列印,但不執行命令。
--execute :執行命令。


==============================================

實驗:
master , slave1 , slave2資料各不相同,而且差別挺大,slave1和slave2都已經複製出錯停止了,怎麼修復?

 


master停止更新,保持靜止狀態,取show master status的值
'5c0d1853-e7ed-11e8-99df-000c29c609e1:1-236527,66c6ba64-e89d-11e8-afe3-005056341042:1-3357'

在slave1和slave2上都做:

stop slave;

reset master;

set global gtid_purged='5c0d1853-e7ed-11e8-99df-000c29c609e1:1-236527,66c6ba64-e89d-11e8-afe3-005056341042:1-3357';

start slave;

這樣主從都是靜止狀態,而複製又是雙yes

然後就是在主庫checksum , 再sync,把主從資料都調一致。

然後master就可以正常oltp了,從庫也正常複製了。

ok