MariaDB Galera Cluster主要功能、優缺點和對比

MariaDB雖然被視為MySQL數據庫的替代品,但它在擴展功能、存儲引擎以及一些新的功能改進方面都強過MySQL。謝謝張樹傑同學為我們準備的這系列MariaDB。希望大家能夠喜歡!

上一期: MariaDB Galera Cluster 之一 Database Replication

一、 MariaDB Galera Cluster主要功能

同步複製

真正的multi-master,即所有節點可以同時讀寫數據庫

自動的節點成員控制,失效節點自動被清除

新節點加入數據自動複製

真正的並行複製,行級

用戶可以直接連接集群,使用感受上與MySQL完全一致

二、 MariaDB Galera Cluster的優缺點

1 優勢:

因為是多主,所以不存在Slavelag(延遲)

不存在丟失事務的情況

同時具有讀和寫的擴展能力

更小的客戶端延遲

節點間數據是同步的,而Master/Slave模式是異步的,不同slave上的binlog可能是不同的

2 缺點:

加入新節點時開銷大,需要複製完整的數據

不能有效地解決寫擴展的問題,所有的寫操作都發生在所有的節點

有多少個節點,就有多少份重複的數據

由於事務提交需要跨節點通信,即涉及分佈式事務操作,因此寫入會比主從複製慢很多,節點越多,寫入越慢,死鎖和回滾也會更加頻繁

對網絡要求比較高,如果網絡出現波動不穩定,則可能會造成兩個節點失聯,Galera Cluster集群會發生腦裂,服務將不可用

還有一些地方存在侷限:

僅支持InnoDB/XtraDB存儲引擎,任何寫入其他引擎的表,包括mysql.*表都不會被複制。但是DDL語句可以複製,但是insert into mysql.user(MyISAM存儲引擎)之類的插入數據不會被複制

Delete操作不支持沒有主鍵的表,因為沒有主鍵的表在不同的節點上的順序不同,如果執行select … limit …將出現不同的結果集

LOCK/UNLOCK TABLES/FLUSH TABLES WITH READ LOCKS不支持單表所鎖,以及鎖函數GET_LOCK()、RELEASE_LOCK(),但FLUSH TABLES WITH READ LOCK支持全局表鎖

General Query Log日誌不能保存在表中,如果開始查詢日誌,則只能保存到文件中

不能有大事務寫入,不能操作wsrep_max_ws_rows=131072(行),且寫入集不能超過wsrep_max_ws_size=1073741824(1GB),否則客戶端直接報錯

由於集群是樂觀鎖併發控制,因此,在commit階段會有事務衝突發生。如果兩個事務在集群中的不同節點上對同一行寫入並提交,則失敗的節點將回滾,客戶端返回死鎖報錯

XA分佈式事務不支持Codership Galera Cluster,在提交時可能會回滾

整個集群的寫入吞吐量取決於最弱的節點限制,集群要使用同一的配置

三、 MariaDB與Mysql的對比

1 MariaDB發展趨勢和更新頻率

畢竟基於MySQL創始人領銜開發的MariaDB數據庫,肯定是知道MYSQL數據庫存在的弱項,然後提供更好的兼容性和擴展性,我們基本上完全可以將MYSQL數據庫建議到MariaDB數據庫中,而且MariaDB發展速度和升級速度遠遠優先。

2 MySQL封閉且發展緩慢

由於MySQL在被收購之後更新速度與性能的優化非常的緩慢,而且是閉源的,完全沒有Oracle之外的人參與進來,很多需要解決的問題都沒有升級進去,反之很多公司雖然也有利用自己開發的分支Mysql版本。

3 MariaDB的特點和優勢

MariaDB基於事務的Maria存儲引擎,替換了MySQL的MyISAM存儲引擎,它使用了Percona的 XtraDB,InnoDB的變體,MariaDB默認的存儲引擎是Aria,不是MyISAM。Aria可以支持事務,但是默認情況下沒有打開事務支持,因為事務支持對性能會有影響。MariaDB是一個採用Maria存儲引擎的MySQL分支版本,是由原來 MySQL 的作者Michael Widenius創辦的公司所開發的免費開源的數據庫服務器。

4 MariaDB與MySQL對比

這個直觀的區別在於MariaDB能夠快速的查詢和處理數據,且佔用資源相對是少於MySQL數據庫的,而且在運行速度、以及支持對 Unicode 的排序問題優於MYSQL數據庫。


分享到:


相關文章: