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阻塞,則整個叢集將被阻塞。
1、選擇SST捐獻節點
如果沒有可用的節點可以安全地執行增量狀態傳輸(IST),則群集預設為SST。
如果有可用的節點可以執行IST,則叢集首選遠端節點上的本地節點作為捐獻節點。
如果沒有本地節點可用於執行IST,則群集將選擇一個遠端節點作為捐獻節點。
如果有多個本地和遠端節點可以執行IST,則群集將選擇最高seqno的節點作為捐獻節點。
2、使用Percona Xtrabackup
預設的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配置文件中提供了有關此方法的詳細資訊。
3、使用mysqldump
此方法使用標準mysqldump實用程式來轉儲來自捐獻節點的所有資料庫,並將其匯入加入節點。要使此方法有效,wsrep_sst_auth需要使用根證書設定變數。這種方法是最慢的,它在SST期間執行全域性鎖定,這阻止了對捐獻節點的寫入。
用於此方法的指令碼是/usr/bin/wsrep_sst_mysqldump ,它包含在Percona XtraDB Cluster二進位制包中。
4、運用 rsync
此方法使用rsync將檔案從捐獻節點複製到加入節點。在某些情況下,這可能比使用XtraBackup更快,但它需要一個全域性資料鎖定,這將阻止寫入到捐獻節點。此方法不需要在wsrep_sst_auth變數中設定根憑證。
用於此方法的指令碼是/usr/bin/wsrep_sst_rsync ,它包含在Percona XtraDB Cluster二進位制包中。
5、表空間不在資料目錄中的表的SST
例如:
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無法清除不在資料目錄中的表空間。
三、更多參考
--------------------- 作者:Leshami 來源:CSDN 原文:https://blog.csdn.net/leshami/article/details/79908071?utm_source=copy 版權宣告:本文為博主原創文章,轉載請附上博文連結!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2215745/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL高可用方案-PXC(Percona XtraDB Cluster)環境部署詳解MySql
- Percona XtraDB Cluster 的一些使用限制(PXC 5.7)
- PXC(Percona XtraDB Cluster)的缺點介紹
- PXC(Percona-XtraDB-Cluster)5.7版本叢集安裝和使用初探
- 基於Centos7部署Percona Xtradb Cluster高可用架構CentOS架構
- MySQL Galera Cluster全解析 Part 3 狀態快照傳輸(SST)MySql
- Percona XtraDB Cluster之流量控制
- docker-compose搭建percona-xtradb-cluster8.0Docker
- mysql之 Percona XtraDB Cluster叢集執行緒模型MySql執行緒模型
- 基於Docker搭建Percona XtraDB Cluster資料庫叢集Docker資料庫
- PerconaXtraDBClusterStrictMode(PXC5.7)
- Mysql 5.7 MHA 高可用MySql
- MySQL高可用架構-MMM、MHA、MGR、PXCMySql架構
- pxc 事務pre-commit狀態阻塞MIT
- haproxy狀態檢測指令碼(完成高可用)指令碼
- MySQL5.7高可用版釋出MySql
- MySQL高可用之GC-Galera Cluster for MySQLMySqlGC
- MySQL高可用之MGC--MariaDB Galera ClusterMySqlGC
- Centos7.5基於MySQL5.7的 InnoDB Cluster 多節點高可用叢集環境部署記錄CentOSMySql
- ProxySQL Cluster 高可用叢集環境部署記錄SQL
- weblogic NodeManager狀態不可用Web
- 國際站RDSMySQL5.7高可用版釋出MySql
- VCS中檢查Cluster中節點的狀態
- Redis Cluster高可用叢集線上遷移操作記錄Redis
- 前端狀態管理與有限狀態機前端
- 基於Centos7.x 搭建MySQL Galera Cluster高可用架構CentOSMySql架構
- 基於MySQL Cluster + LVS + KeepAlived部署負載均衡高可用架構MySql負載架構
- 面試官:你如何利用 MySQL Cluster 實現整體高可用?面試MySql
- 淺談TCP(1):狀態機與重傳機制TCP
- Mycat中介軟體實現Percona Cluster讀寫分離
- Redis叢集與高可用Redis
- React 狀態管理:狀態與生命週期React
- MySQL PXC構建一個新節點只需IST傳輸的方法(推薦)MySql
- HBase可用性分析與高可用實踐
- Vue 頁面狀態保持頁面間資料傳輸的一種方法Vue
- 【多執行緒與高併發】- 執行緒基礎與狀態執行緒
- Vuex 單狀態庫 與 多模組狀態庫Vue
- 點對點傳輸現狀,鐳速高速點對點傳輸解決方案