1. 程式人生 > >Mariadb Galera Cluster 部署

Mariadb Galera Cluster 部署

數據庫

不同於標準的MySQL服務器和MySQL集群,MySQL / MariaDB Galera集群在啟動方式上有一些細小的區別。Galera需要在集群啟動一個節點作為參考點,剩余的節點才能加入形成集群。這個過程被稱為集群引導。引導是一個初始步驟,引導數據庫節點作為主節點,其它節點將主節點作為參考點同步數據。


啟動集群

在三臺機器上安裝mariadb,並做初始化配置。在第一臺節點上修改/etc/my.cnf.d/server.cnf 的內容,在[galera]部分添加集群配置:

wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address=‘gcomm://‘    #第一個啟動節點配置
wsrep_cluster_name=‘mariadb_cluster‘
wsrep_node_address=‘192.168.0.56‘   #本機IP地址
wsrep_node_name=‘mariadb_node1‘    #集群節點名稱
wsrep_sst_method=rsync
 
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0


在第二臺和第三臺節點上配置/etc/my.cnf.d/server.cnf 文件的[galera]部分:

wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address=‘gcomm://192.168.0.56,192.168.0.58‘
wsrep_cluster_name=‘mariadb_cluster‘
wsrep_node_address=‘192.168.0.57‘
wsrep_node_name=‘mariadb_node2‘
wsrep_sst_method=rsync
 
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0


wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address=‘gcomm://192.168.0.56,192.168.0.57‘
wsrep_cluster_name=‘mariadb_cluster‘
wsrep_node_address=‘192.168.0.58‘
wsrep_node_name=‘mariadb_node3‘
wsrep_sst_method=rsync
 
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0

如果要啟動Mariadb Galera Cluster ,首先選擇node1節點為初始節點,將node1作為第一個啟動節點,並且設置gcomm為空,否則無法啟動。

wsrep_cluster_address=‘gcomm://‘

nide1啟動命令(不同版本的不同啟動方式):

$ service mysql bootstrap # sysvinit$ service mysql start --wsrep-new-cluster # sysvinit$ galera_new_cluster # systemd $ mysqld_safe --wsrep-new-cluster # command line


node1啟動之後,依次啟動node2和node3. 之後修改node1 "wsrep_cluster_address"配置,添加上其它集群節點IP.

$ systemctl start mariadb

查看系統端口是否存在,默認情況下系統會監聽3306,4567端口。

登錄數據庫,查看集群節點是否加入:

MariaDB [(none)]> SHOW STATUS LIKE"wsrep_cluster_size";
+--------------------+-------+
| Variable_name   | Value |
+--------------------+-------+
| wsrep_cluster_size | 3   |
+--------------------+-------+

可以通過 wsrep_cluster_status 和 wsrep_local_state_comment 查看節點的同步狀態。

MariaDB [(none)]> show status like "wsrep_cluster_status";
+----------------------+---------+
| Variable_name     | Value   |
+----------------------+---------+
| wsrep_cluster_status | Primary |
+----------------------+---------+
1 row in set (0.00 sec)
MariaDB [(none)]> show status like "wsrep_local_state_comment";
+---------------------------+--------+
| Variable_name          | Value  |
+---------------------------+--------+
| wsrep_local_state_comment | Synced |
+---------------------------+--------+
1 row in set (0.00 sec)


警告:對一個已存在的集群添加新的節點時,不要使用引導的方式(bootstrap)啟動這個節點,不能在一個集群中使用兩個引導節點。


故障恢復和重啟集群


當我們的mariadb Galera Cluster集群需要重啟(意外宕機)時,未來保證數據的完整性,選擇合適的主節點作為引導啟動節點非常重要,如果啟動順序不正確可能會造成數據丟失或者無法啟動。


當Galera以節點上的引導命令啟動時該 特定節點將到達主狀態(檢查wsrep_cluster_status的值)。其余的節點只需要一個正常的啟動命令,它們將自動查找集群中的現有主組件(PC)並加入組成一個集群。然後,數據同步通過加速器和供體之間的增量狀態轉移(IST)或快照狀態轉移(SST)發生。


因此,基本上,如果要啟動新集群或集群中沒有其他節點處於PRIMARY狀態,則應僅引導集群。在選擇采取的行動時應該小心,否則可能會導致拆分集群或丟失數據。


如果集群中主節點運行正常,我們只需要正常啟動其他節點。所以做關鍵的一點是在集群全部宕機之後,我們要找到最後一個退出集群,並且數據是最完整的節點。通過啟動這個節點,其他節點啟動之後與這個節點同步數據才能保證數據庫集群的數據不丟失。


參考文檔:

https://severalnines.com/blog/how-bootstrap-mysqlmariadb-galera-cluster

http://galeracluster.com/documentation-webpages/restartingcluster.html


本文出自 “Trying” 博客,請務必保留此出處http://tryingstuff.blog.51cto.com/4603492/1922986

Mariadb Galera Cluster 部署