背景
做了主備mysql的配置以后,可能因為切換過程造成不一致的情況,這個時候可以處理的方式是全量導入再導出,這個有個問題就是操作的數據太多了
我們只需要數據補全同步即可
mysql的同步是基于binlog的,如果沒有記錄的部分的數據,這個是無法同步的,就需要手動處理
或者就是兩個數據庫,定期手動同步到另外一個數據庫,這個都可以使用這個工具
工具下載
下載網址
https://www.percona.com/percona-toolkit
我的環境是centos7的,那么使用的就是3.6.0版本
wget https://downloads.percona.com/downloads/percona-toolkit/3.6.0/binary/redhat/7/x86_64/percona-toolkit-3.6.0-1.el7.x86_64.rpm
下載完成后安裝即可
同步數據
同步這個需要數據庫和表都存在,這個如果缺少的,需要處理下
[root@lab102 ~]# pt-table-sync --print --ignore-databases=mysql h=192.168.0.101,u=root,p='password' h=192.168.0.103,u=root,p='password'
這個是打印準備處理的sql語句,用于檢查,避免操作錯誤
上面的前面的是主,讓后面的跟前面的同步,也就是讓192.168.0.103的數據跟192.168.0.101的數據一致
確認沒有問題后再執行
[root@lab102 ~]# pt-table-sync --execute --ignore-databases=mysql h=192.168.0.101,u=root,p='password' h=192.168.0.103,u=root,p='password'
執行完就會開始執行同步的操作
pt-slave-find查找副本的結構
[root@lab102 percona]# pt-slave-find h=192.168.0.101,u=root,p='password'
192.168.0.101
Version 8.0.30
Server ID 1
Uptime 01:56:19 (started 2025-04-15T15:11:29)
Replication Is not a slave, has 1 slaves connected, is not read_only
Filters binlog_ignore_db=mysql,sys,information_schema,performance_schema
Binary logging MIXED
Slave status
Slave mode STRICT
Auto-increment increment 1, offset 1
InnoDB version 8.0.30
+- 192.168.0.102Version 8.0.30Server ID 2Uptime 06:20 (started 2025-04-15T17:01:28)Replication Is a slave, has 0 slaves connected, is read_onlyFilters binlog_ignore_db=mysql,sys,information_schema,performance_schemaBinary logging MIXEDSlave status 0 seconds behind, running, no errorsSlave mode STRICTAuto-increment increment 1, offset 1InnoDB version 8.0.30
可以拿到一些信息,主本的信息,副本的節點的信息,這個用來做監控不錯
總結
這個工具應該還有其它功能,目前只用到這一個,后續再繼續看看