您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Percona XtraDB Cluster高可用與狀態快照傳輸PXC 5.7 的示例分析,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
Percona XtraDB Cluster(下稱PXC)高可用集群支持任意節點在運行期間的重啟,升級或者意外宕機,即它解決了單點故障問題。那在這個意外宕機或者重啟期間,該節點丟失的數據如何再次進行同步呢?介紹了在節點故障和重啟PXC如何實現高可用以及狀態快照傳輸的幾種方法優缺點。
在具有3個節點的基本設置中,如果您關閉任何節點,Percona XtraDB集群將繼續運行。在任何時候,您都可以關閉任何節點來執行維護或進行配置更改。即使在非計劃的情況下(如節點崩潰或者通過網絡無法使用),Percona XtraDB集群將繼續工作,您將能夠在工作節點上運行查詢。
如果在節點關閉期間數據發生更改,則節點在再次加入群集時可以使用兩個選項:
??狀態快照傳輸State Snapshot Transfer(SST),即將所有數據從一個節點復制到另一個時。
??通常在新節點加入集群并從現有節點接收所有數據時使用SST。Percona XtraDB集群中有三種可用的SST方法:
????mysqldump
????rsync
????xtrabackup
??mysqldump與rsync的缺點是,當數據正在被復制的時候,您的集群狀態將變為只讀(這2個SST方式使用了FLUSH TABLES WITH READ LOCK)
??使用SST xtrabackup方式,在整個同步過程中,不需要讀鎖(READ LOCK),僅用于同步.frm文件(與常規備份相同)。
??增量狀態傳輸Incremental State Transfer(IST)是指僅將增量更改從一個節點復制到另一個節點時。
??即使沒有將群集鎖定在只讀狀態,SST可能會影響并干擾服務的正常運行。 IST可以避免這種情況。 如果某個節點短時間內關閉,它能夠獲取僅僅發生故障時刻的更改。 IST是在節點上使用緩存機制來實現。 每個節點都包含一個高速緩存,最后N次更改的環形緩沖區(大小可配置),并且該節點能夠傳輸該高速緩存的一部分。 顯然,只有當傳輸所需的變化量小于N時才能完成IST。如果它超過N,那么加入節點必須執行SST。
可以使用以下命令監視節點的當前狀態:
SHOW STATUS LIKE ‘wsrep_local_state_comment’ ;
當一個節點處于狀態Synced (6)時,它是集群的一部分并可以對外提供服務
狀態快照傳輸(SST)是從一個節點(捐獻者)到加入節點(加入者)的完整數據拷貝。當新節點加入群集時使用它。為了與群集同步,新節點必須從已經是群集一部分的節點接收數據。
Percona XtraDB集群中有三種可用的SST方法:
??mysqldump
??rsync
??xtrabackup
mysqldump和rsync缺點是捐獻節點變為READ-ONLY當數據被復制時。另一方面,Xtrabackup SST使用備份鎖定,這意味著Galera提供程序不會像FTWRL(帶有讀鎖的刷新表)那樣暫停。SST方法可以使用wsrep_sst_method變量進行配置。
注意
如果gcs.sync_donor變量設置為Yes (默認為No),那么如果捐獻節點被SST阻塞,則整個集群將被阻塞。
如果沒有可用的節點可以安全地執行增量狀態傳輸(IST),則群集默認為SST。
如果有可用的節點可以執行IST,則集群首選遠程節點上的本地節點作為捐獻節點。
如果沒有本地節點可用于執行IST,則群集將選擇一個遠程節點作為捐獻節點。
如果有多個本地和遠程節點可以執行IST,則群集將選擇最高seqno的節點作為捐獻節點。
默認的SST方法是使用Percona XtraBackup的xtrabackup-v2。這是利用備份鎖的最少阻塞方法。XtraBackup在捐獻節點上本地運行,因此在捐獻節點上設置正確的用戶憑證非常重要。為了讓Percona XtraDB集群使用XtraBackup執行SST,需要在wsrep_sst_auth變量中設置用于連接到捐獻節點的證書。除了憑證之外,還需要在服務器配置文件my.cnf中指定datadir,否則傳輸過程將失敗。
有關所需憑據的更多信息,請參閱XtraBackup手冊。
要測試憑據是否可用,請在捐獻節點上使用wsrep_sst_auth變量中指定的用戶名和密碼運行innobackupex。例如,如果值wsrep_sst_auth是root:Passw0rd,在innobackupex命令應該是這樣的:
innobackupex –user = root –password = Passw0rd /tmp/
Percona XtraBackup SST配置文檔中提供了有關此方法的詳細信息。
此方法使用標準mysqldump實用程序來轉儲來自捐獻節點的所有數據庫,并將其導入加入節點。要使此方法有效,wsrep_sst_auth需要使用根證書設置變量。這種方法是最慢的,它在SST期間執行全局鎖定,這阻止了對捐獻節點的寫入。
用于此方法的腳本是/usr/bin/wsrep_sst_mysqldump ,它包含在Percona XtraDB Cluster二進制包中。
此方法使用rsync將文件從捐獻節點復制到加入節點。在某些情況下,這可能比使用XtraBackup更快,但它需要一個全局數據鎖定,這將阻止寫入到捐獻節點。此方法不需要在wsrep_sst_auth變量中設置根憑證。
用于此方法的腳本是/usr/bin/wsrep_sst_rsync ,它包含在Percona XtraDB Cluster二進制包中。
例如:
CREATE TABLE t1 (c1 INT PRIMARY KEY ) DATA DIRECTORY = ‘/alternative/directory’ ;
結果取決于SST方法:
SST使用 rsync
SST會報告成功,但表格的數據不會被復制,因為rsync只是復制文件。您將無法訪問joiner節點上的表:
mysql> select * from t1;
ERROR 1812 (HY000): Tablespace is missing for table sbtest
.t1
.
SST 使用mysqldump
按預期工作。如果文件不存在,它將被創建。否則,它將嘗試使用該文件(如果該文件沒有預期的格式,則返回錯誤)。
使用Percona XtraBackup的SST
XtraBackup會將表格還原到joiner節點上的相同位置。如果目標目錄不存在,它將被創建。如果目標文件已經存在,則會返回錯誤,因為XtraBackup無法清除不在數據目錄中的表空間。
關于Percona XtraDB Cluster高可用與狀態快照傳輸PXC 5.7 的示例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。