天天看點

mysql Pxc工作原理_Mysql PXC原理和維護

PXC原理:

1:PXC使用端口

3306:資料庫對外服務的端口,也可自定義其他端口号

4444:請求SST,SST指資料一個鏡像傳輸,在PXC中預設使用xtrabackup,或者使用rsync、mysqldump來完成資料初始狀态一緻。

4567:PXC叢集組成員之間進行溝通交流的一個端口号

4568:傳輸IST用的端口,相對于SST來說的一個增量。

Mysql複制,不管是異步還是半同步,都存在一定的延遲。

PXC最大的優勢就是強一緻性,無同步延遲,PXC中每一個節點都可以讀寫。

PXC一個節點寫完後就用箱子(DatePage)推送給Group裡所有的成員,就是一個寫結果,類似于Oracle中資料塊複制。

PXC叢集每次發起一個動作,都會有一個唯一的編号Global Trx Id,

其他節點多一個動作:apply_cb

動作發起者:commit_cb.

以上這些動作都是通過4567端口互動的。

PXC叢集中,如果主節點寫入過大,apply_cb會跟不上,可以将wsrep_slave_threads配置成和CPU的個數相等或者1.5倍。

SST:state snapshot transfer

每個節點都有一份獨立的資料。

早啟動第一個節點,叢集中沒有其他成員,第一個節點就是老大。

在第一個節點上可以把相關賬号建立,資料的基本初始化,都完成。

在第二個節點啟動加入叢集時候,檢視參數wsrep_cluster_address=gcomm://xxxx,xxxx,xxxx

第二個節點是新成員,沒有ID,第一個節點就把自己完全備份(snapshot)傳送給新加入的節點(SST)。

傳輸SST的幾種辦法:xtrabackup、mysqldump、rsync.

每個節點需要安裝socat、perl-IO_Socket、nc包。

PXC的維護:

假如節點3需要停機維護,加記憶體、換硬碟,在節點3啟動後,希望能傳送IST,

節點3能停機多長時間,可以傳送IST,可以檢視wsrep_provider_options="gcache.size=1G",

Gcache.size設定多大合适,可以計算一個小時的binlog量。

如果3個節點全部關閉,在啟動時候會發生什麼?

會全部傳輸SST,是以要先啟動最後關閉的節點,才不會丢失資料。

如需傳輸IST,則需要滾動維護,Node1先關閉,修複完成,加回叢集,然後Node2關閉,修複完成,加回叢集,

原則上要保持group裡最少一個成員活着,所有節點最少要有一個線上,進行滾動重新開機維護。

在有一個節點需要長時間停機,在啟動後,可以利用主從複制,再把這個節點轉化成PXC裡的節點。