PXC(percona xtradb cluster)新加節點避免SST的方法


環境:

node1:192.168.0.100  pxc節點

node2:192.168.0.101  新節點

 

把新加入的節點先建立為node1的從庫,可以使用mysqldump或innobackupex來備份出數據,如果數據量不大,那么就使用mysqldump來備份(dump之前先建立復制帳號,這里只需要replication slave權限即可)。

mysqldump --master-data=2 --single-transaction -A > node1_db.sql

 

把新節點mysqld初始化一下,並導入node1 dump出的數據。注意:新節點配置從庫時不要在my.cnf中配置PXC的參數。

 

導入數據后,把db.sql文件中的CHANGE MASTER語句找出來補全用戶帳號,密碼,IP,並在新節點上執行連接到node1上。等待mysql正常同步之后,show slave status查看到主從復制到了什么位置relay_master_log_file和exec_master_log_pos,記下來,然后把mysql的同步停掉,然后快速把mysqld停掉。然后在my.cnf中把PXC的配置全部加上。

然后找到從gcache的什么位置開始同步數據(根據前面show slave stauts記錄的位置,假設binlog為003,position為4235),到從庫的binlog目錄下查看記錄的binlog中的最后一個位置:

然后到node1節點上flush logs一下,然后找和從庫同樣的binlog file和position,通過從庫的show slave status輸出的position去主庫找xid(也可以從從庫的中繼日志中找這個position中查找xid):

 

xid是mysql內部分布式XA事務的ID。xid是一個8字節的有序增長。

此時,查看主庫的如下圖文件:

然后把這個文件復制到從庫,把seqno改為23(為上上圖中4035對應的xid),注意修改文件權限為mysql用戶可訪問。

 

注意:要先從status中確認這個xid在不在gcache中:

上圖中看到是從1開始,說明23在gcache里面。

 

此時,啟動新節點的mysqld。如果啟動輸出沒有報錯,那就查看下錯誤日志。如果錯誤日志中沒有錯誤,那么就表示PXC節點加入集群同步成功。

 

注意:啟動新節點的時候最好是使用如下命令指定donor節點,指定新節點從哪里同步數據:

mysql_safe --wsrep-donor=node1

 

此時,之前建立的主從架構可以不需要了,可以直接reset slave all掉(已經沒用了,PXC節點開始同步之后,主從復制已經無用了)。

 

注:

1.PXC節點對於同一張表的自增多節點insert,會自動根據節點數來設置自增步長和自增初始值。是為了防止並發insert造成數據沖突。

2.PXC環境一般用於對數據一致性比較高的環境。比如交易類的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM