能夠用標準的數據庫備份方法來備份cluster的節點數據。但這樣的方法缺乏GTID,這種備份也沒法把節點恢復到預約的狀態。此外,一些備份程序運行時可能會阻斷集羣操做。聯合GTID來備份須要另外的途徑。mysql
狀態快照轉移做爲備份
作一個完整的數據備份和經過state snapshot transfer作一個節點的備份是很是類似的。兩種狀況下,節點都使用相同的機制,來聯合GTID和database狀態來建立一個庫內容的全備份。爲啓用此備份特性,須要一個腳原本實現想要的備份過程和galera仲裁者守護進程,觸發的方式相似於快照轉移
$ garbd --address gcomm://192.168.1.2?gmcast.listen_addr=tcp://0.0.0.0:4444 \ --group example_cluster --donor example_donor --sst backup
這條命令觸發了供體節點來調用wsrep_sst_backup.sh腳本,這個腳本是mysqld進程經過PATH來找的。當供體節點到達no change are happening to the database的明確界定的點時,就會跑這個備份腳本,傳遞GTID給相應的當前庫狀態。
命令中,‘gmcast.listen_addr=tcp://0.0.0.0:4444‘是一個仲裁監聽socket地址,用來與cluster通信的。 只需指定地址,0.0.0.0:4567是默認的
經過狀態快照轉移機制來調用buckups有如下幾點好處:
一、節點能夠在一個界定好的點來啓動備份
二、節點把GTID和backup相關聯
三、節點與cluster不一樣步,避免作備份時影響帶寬性能,備份進程更不會阻斷節點
四、cluster知道那個節點正在執行備份,就不會選這個節點作另外一個節點的供體
腳本化的狀態快照轉移
當一個節點發送&接收一個狀態快照轉移(State Snapshot Transfer)時,是經過跑一個獨立於database server的外部進程來管理它的。當你不知足於這些進程提供的默認操做時,galera cluster提供一個接口給用戶shell 腳原本管理節點上的狀態快照轉移。
使用普通的SST腳本
Galera cluster包括一個普通腳本用於管理狀態快照轉移,你能夠用它來做爲建立本身腳本的基礎起點。該腳本的文件名爲wsrep_sst_common.sh。Linux下默認安裝在/usr/bin。普通SST腳本提供解析參數列表、錯誤記錄等的現成功能。而且沒有對參數順序和數量的約束,能夠根據自身狀況增長或忽略某些參數。
它假定只有在狀態轉移以後,接收節點的存儲引擎初始化才進行。意味着它直接拷貝源數據內容到目的數據目錄
狀態轉移腳本參數
當galera cluster啓動一個外部進程作狀態快照轉移時,會傳遞一些參數來配置狀態轉移腳本
1.通用參數:這些參數全部的狀態轉移腳本都會用到,不管發送仍是接受節點
--role:區別donor或joiner
--address:joiner的IP地址,joiner能夠用wsrep_sst_receive_address這個參數來配
--auth:權限信息,可經過wsrep_sst_auth參數來配
--datadir:腳本所需的數據目錄來源於mysql_real_data_home這個參數
--defaults-file:my.cnf的路徑
2.donor特有的參數:這些參數只被用於donor
--gtid:節點給出的GTID來自於state UUID和sequence number或seqno
--socket:若是須要,能夠配置本地server的socket用於通訊
--bypass:節點用於甄別是否跳過實際數據的傳輸,只傳遞GTID,也就是說該節點是否應該啓動增量狀態傳輸
3.邏輯狀態轉移特有的參數:這些參數只被傳遞到發送和接收端的wsrep_sst_mysqldump.sh腳本中
--user:用來鏈接joiner和donor的數據庫的用戶,兩邊都應該一致,用wsrep_sst_auth參數來定義
--password:用來鏈接joiner和donor的數據庫的用戶,兩邊都應該一致,用wsrep_sst_auth參數來定義
--host:joiner的IP地址
--port:joiner的端口
--local-port:發送狀態轉移的端口
調用規則
receiver接收並應用transfer完成以後,會輸出接受節點的標準GTID,退出腳本,返回狀態0,說明狀態轉移成功
sende在完成傳輸後,會發送一個done\n的信號,當腳本收到這個信號以後,會返回0值退出
啓動腳本化的SST
無論用默認的自帶腳本,仍是本身寫腳本,啓動的過程都是同樣的。文件名必須是wsrep_sst_<name>.sh。name是wsrep_sst_methord參數的值