溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Percona XtraDB Cluster高可用與狀態(tài)快照傳輸PXC 5.7 的示例分析

發(fā)布時間:2021-11-05 16:55:01 來源:億速云 閱讀:117 作者:柒染 欄目:建站服務(wù)器

這篇文章將為大家詳細(xì)講解有關(guān)Percona XtraDB Cluster高可用與狀態(tài)快照傳輸PXC 5.7 的示例分析,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

Percona XtraDB Cluster(下稱PXC)高可用集群支持任意節(jié)點在運行期間的重啟,升級或者意外宕機,即它解決了單點故障問題。那在這個意外宕機或者重啟期間,該節(jié)點丟失的數(shù)據(jù)如何再次進(jìn)行同步呢?介紹了在節(jié)點故障和重啟PXC如何實現(xiàn)高可用以及狀態(tài)快照傳輸?shù)膸追N方法優(yōu)缺點。

一、高可用

在具有3個節(jié)點的基本設(shè)置中,如果您關(guān)閉任何節(jié)點,Percona XtraDB集群將繼續(xù)運行。在任何時候,您都可以關(guān)閉任何節(jié)點來執(zhí)行維護(hù)或進(jìn)行配置更改。即使在非計劃的情況下(如節(jié)點崩潰或者通過網(wǎng)絡(luò)無法使用),Percona XtraDB集群將繼續(xù)工作,您將能夠在工作節(jié)點上運行查詢。

如果在節(jié)點關(guān)閉期間數(shù)據(jù)發(fā)生更改,則節(jié)點在再次加入群集時可以使用兩個選項:

??狀態(tài)快照傳輸State Snapshot Transfer(SST),即將所有數(shù)據(jù)從一個節(jié)點復(fù)制到另一個時。

??通常在新節(jié)點加入集群并從現(xiàn)有節(jié)點接收所有數(shù)據(jù)時使用SST。Percona XtraDB集群中有三種可用的SST方法:

????mysqldump 
????rsync 
????xtrabackup

??mysqldump與rsync的缺點是,當(dāng)數(shù)據(jù)正在被復(fù)制的時候,您的集群狀態(tài)將變?yōu)橹蛔x(這2個SST方式使用了FLUSH TABLES WITH READ LOCK)

??使用SST xtrabackup方式,在整個同步過程中,不需要讀鎖(READ LOCK),僅用于同步.frm文件(與常規(guī)備份相同)。

??增量狀態(tài)傳輸Incremental State Transfer(IST)是指僅將增量更改從一個節(jié)點復(fù)制到另一個節(jié)點時。

??即使沒有將群集鎖定在只讀狀態(tài),SST可能會影響并干擾服務(wù)的正常運行。 IST可以避免這種情況。 如果某個節(jié)點短時間內(nèi)關(guān)閉,它能夠獲取僅僅發(fā)生故障時刻的更改。 IST是在節(jié)點上使用緩存機制來實現(xiàn)。 每個節(jié)點都包含一個高速緩存,最后N次更改的環(huán)形緩沖區(qū)(大小可配置),并且該節(jié)點能夠傳輸該高速緩存的一部分。 顯然,只有當(dāng)傳輸所需的變化量小于N時才能完成IST。如果它超過N,那么加入節(jié)點必須執(zhí)行SST。

可以使用以下命令監(jiān)視節(jié)點的當(dāng)前狀態(tài):

SHOW STATUS LIKE ‘wsrep_local_state_comment’ ; 
當(dāng)一個節(jié)點處于狀態(tài)Synced (6)時,它是集群的一部分并可以對外提供服務(wù)

二、狀態(tài)快照傳輸

狀態(tài)快照傳輸(SST)是從一個節(jié)點(捐獻(xiàn)者)到加入節(jié)點(加入者)的完整數(shù)據(jù)拷貝。當(dāng)新節(jié)點加入群集時使用它。為了與群集同步,新節(jié)點必須從已經(jīng)是群集一部分的節(jié)點接收數(shù)據(jù)。

Percona XtraDB集群中有三種可用的SST方法:

??mysqldump 
??rsync 
??xtrabackup

mysqldump和rsync缺點是捐獻(xiàn)節(jié)點變?yōu)镽EAD-ONLY當(dāng)數(shù)據(jù)被復(fù)制時。另一方面,Xtrabackup SST使用備份鎖定,這意味著Galera提供程序不會像FTWRL(帶有讀鎖的刷新表)那樣暫停。SST方法可以使用wsrep_sst_method變量進(jìn)行配置。

注意

如果gcs.sync_donor變量設(shè)置為Yes (默認(rèn)為No),那么如果捐獻(xiàn)節(jié)點被SST阻塞,則整個集群將被阻塞。

1、選擇SST捐獻(xiàn)節(jié)點

如果沒有可用的節(jié)點可以安全地執(zhí)行增量狀態(tài)傳輸(IST),則群集默認(rèn)為SST。 
如果有可用的節(jié)點可以執(zhí)行IST,則集群首選遠(yuǎn)程節(jié)點上的本地節(jié)點作為捐獻(xiàn)節(jié)點。 
如果沒有本地節(jié)點可用于執(zhí)行IST,則群集將選擇一個遠(yuǎn)程節(jié)點作為捐獻(xiàn)節(jié)點。 
如果有多個本地和遠(yuǎn)程節(jié)點可以執(zhí)行IST,則群集將選擇最高seqno的節(jié)點作為捐獻(xiàn)節(jié)點。

2、使用Percona Xtrabackup

默認(rèn)的SST方法是使用Percona XtraBackup的xtrabackup-v2。這是利用備份鎖的最少阻塞方法。XtraBackup在捐獻(xiàn)節(jié)點上本地運行,因此在捐獻(xiàn)節(jié)點上設(shè)置正確的用戶憑證非常重要。為了讓Percona XtraDB集群使用XtraBackup執(zhí)行SST,需要在wsrep_sst_auth變量中設(shè)置用于連接到捐獻(xiàn)節(jié)點的證書。除了憑證之外,還需要在服務(wù)器配置文件my.cnf中指定datadir,否則傳輸過程將失敗。

有關(guān)所需憑據(jù)的更多信息,請參閱XtraBackup手冊。

要測試憑據(jù)是否可用,請在捐獻(xiàn)節(jié)點上使用wsrep_sst_auth變量中指定的用戶名和密碼運行innobackupex。例如,如果值wsrep_sst_auth是root:Passw0rd,在innobackupex命令應(yīng)該是這樣的:

innobackupex –user = root –password = Passw0rd /tmp/ 
Percona XtraBackup SST配置文檔中提供了有關(guān)此方法的詳細(xì)信息。

3、使用mysqldump

此方法使用標(biāo)準(zhǔn)mysqldump實用程序來轉(zhuǎn)儲來自捐獻(xiàn)節(jié)點的所有數(shù)據(jù)庫,并將其導(dǎo)入加入節(jié)點。要使此方法有效,wsrep_sst_auth需要使用根證書設(shè)置變量。這種方法是最慢的,它在SST期間執(zhí)行全局鎖定,這阻止了對捐獻(xiàn)節(jié)點的寫入。

用于此方法的腳本是/usr/bin/wsrep_sst_mysqldump ,它包含在Percona XtraDB Cluster二進(jìn)制包中。

4、運用 rsync

此方法使用rsync將文件從捐獻(xiàn)節(jié)點復(fù)制到加入節(jié)點。在某些情況下,這可能比使用XtraBackup更快,但它需要一個全局?jǐn)?shù)據(jù)鎖定,這將阻止寫入到捐獻(xiàn)節(jié)點。此方法不需要在wsrep_sst_auth變量中設(shè)置根憑證。

用于此方法的腳本是/usr/bin/wsrep_sst_rsync ,它包含在Percona XtraDB Cluster二進(jìn)制包中。

5、表空間不在數(shù)據(jù)目錄中的表的SST

例如:

CREATE TABLE t1 (c1 INT PRIMARY KEY ) DATA DIRECTORY = ‘/alternative/directory’ ;

結(jié)果取決于SST方法:

SST使用 rsync

SST會報告成功,但表格的數(shù)據(jù)不會被復(fù)制,因為rsync只是復(fù)制文件。您將無法訪問joiner節(jié)點上的表: 
mysql> select * from t1; 
ERROR 1812 (HY000): Tablespace is missing for table sbtest.t1.

SST 使用mysqldump 
按預(yù)期工作。如果文件不存在,它將被創(chuàng)建。否則,它將嘗試使用該文件(如果該文件沒有預(yù)期的格式,則返回錯誤)。

使用Percona XtraBackup的SST

XtraBackup會將表格還原到j(luò)oiner節(jié)點上的相同位置。如果目標(biāo)目錄不存在,它將被創(chuàng)建。如果目標(biāo)文件已經(jīng)存在,則會返回錯誤,因為XtraBackup無法清除不在數(shù)據(jù)目錄中的表空間。

關(guān)于Percona XtraDB Cluster高可用與狀態(tài)快照傳輸PXC 5.7 的示例分析就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI