MariaDB Galera Cluster 介紹
MariaDB Galera Cluster 是開源的 MariaDB同步多主機集群。它僅支持XtraDB/ InnoDB存儲引擎。MariaDB作為Mysql的一個分支,在開源項目中已經廣泛使用,例如大熱的openstack,所以,為了保證服務的高可用性,同時提高系統的負載能力,集群部署是必不可少的。
主要功能:
- 同步複製
- 真正的multi-master,即所有節點可以同時讀寫數據庫
- 自動的節點成員控制,失效節點自動被清除
- 新節點加入數據自動複製
- 真正的並行複製,行級
- 用戶可以直接連接集群,使用感受上與MySQL完全一致
優勢:
- 因為是多主,所以不存在Slavelag(延遲)
- 不存在丟失事務的情況
- 同時具有讀和寫的擴展能力
- 更小的客戶端延遲
- 節點間數據是同步的,而Master/Slave模式是異步的,不同slave上的binlog可能是不同的
技術:
Galera集群的複製功能基於Galeralibrary實現,為了讓MySQL與Galera library通訊,特別針對MySQL開發了wsrep API。
Galera插件保證集群同步數據,保持數據的一致性,靠的就是可認證的複製,工作原理如下圖:
當客戶端發出一個commit的指令,在事務被提交之前,所有對數據庫的更改都會被 write-set 收集起來,並且將write-set 紀錄的內容發送給其他節點。
write-set 將在每個節點進行認證測試,測試結果決定著節點是否應用write-set更改數據。
如果認證測試失敗,節點將丟棄 write-set ;如果認證測試成功,則事務提交。
1 .安裝環境準備
安裝MariaDB集群至少需要3臺服務器(如果只有兩臺的話需要特殊配置,請參照官方文檔)
操作系統版本:centos7
- controller1:192.168.0.194
- controller2:192.168.0.195
- controller3:192.168.0.196
為了保證節點間相互通信,需要禁用防火牆設置
在三個節點分別執行命令:
echo '關閉selinux、防火牆'systemctl stop firewalld.service
systemctl disable firewalld.service
firewall-cmd --state
sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config
sed -i 's/^SELINUXTYPE=.*/SELINUXTYPE=disabled/g' /etc/selinux/config
grep --color=auto '^SELINUX' /etc/selinux/config
setenforce 0
閱讀更多 無限雲科技 的文章