pt-table-sync常用參考

pt-table-sync是解決主從數據不一致的絕佳工具,也可也用於兩個不是主從數據庫之間數據同步,不能同步ddl,只能同步數據,以下爲常用例子:
其中h=192.168.56.101爲源端,h=192.168.56.102爲目標端:

1.sync兩個獨立數據庫,無主從複製關係,同步數據庫中所有的表,並排除特定數據庫:
pt-table-sync --charset=utf8 --ignore-databases=mysql,sys u=admin,p=admin,h=192.168.56.101,P=3306 dsn=u=admin,p=admin,h=192.168.56.103,P=3306 --execute --print

如果爲主從可以使用--no-check-slave 忽略主從關係,建議先使用--print查看有哪些不一致,然後使用--execute進行同步:
打印出不一致數據:
pt-table-sync --charset=utf8 --ignore-databases=mysql,sys --no-check-slave u=admin,p=admin,h=192.168.56.101,P=3306 dsn=u=admin,p=admin,h=192.168.56.102,P=3306 --print

同步數據並打印出同步語句:
pt-table-sync --charset=utf8 --ignore-databases=mysql,sys --no-check-slave u=admin,p=admin,h=192.168.56.101,P=3306 dsn=u=admin,p=admin,h=192.168.56.102,P=3306 --execute --print

  1. 同步指定庫或者指定表

只對指定的庫進行數據sync:
pt-table-sync --charset=utf8 --ignore-databases=mysql,sys --databases=data u=admin,p=admin,h=192.168.56.101,P=3306 dsn=u=admin,p=admin,h=192.168.56.102,P=3306 --execute --print

只對指定的表進行數據sync,多個表用逗號隔開:

pt-table-sync --charset=utf8 --ignore-databases=mysql,sys --databases=data --tables=t_shop_order,t_shop_order_detail u=admin,p=admin,h=192.168.56.101,P=3306 dsn=u=admin,p=admin,h=192.168.56.102,P=3306 --execute --print

--tables也可以使用數據庫名和表:
--tables=database_name.table_name

忽略某些庫或者忽略某些表

--ignore-databases=指定要忽略的庫
--ignore-tables=database_name.table_name 指定要忽略的表

3.如果是主從複製,可以加上--sync-to-master參數進行數據sync:

需要同步的表有主鍵或者唯一鍵,其中192.168.56.102爲備庫:
pt-table-sync --sync-to-master --charset=utf8 --ignore-databases=mysql,sys u=admin,p=admin,h=192.168.56.102,P=3306 --execute --print

sync同步多個slave備庫,其中h=192.168.56.102,P=3306, h=192.168.56.103爲備庫:
pt-table-sync --sync-to-master --charset=utf8 --ignore-databases=mysql,sys u=admin,p=admin,h=192.168.56.102,P=3306 , u=admin,p=admin,h=192.168.56.103,P=3306 --execute --print

4.pt-table-sync 幫助說明:
pt-table-sync --help

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章