AWS RDS MySQL和MariaDB Galera Cluster的優(yōu)缺點比較總結(jié)
AWS RDS
MySQL
亞馬遜提供的MySQL服務(wù),部署高可用區(qū)域,單主節(jié)點、隱藏從節(jié)點,自動實現(xiàn)HA切換,可以進行在線擴展,超越單個數(shù)據(jù)庫部署的容量,以處理高讀取量的數(shù)據(jù)庫負載。
1. 優(yōu)點:
(1).在線升級不影響業(yè)務(wù)正常運行,后期擴容性較好
(2).高可用區(qū)域部署,隱藏從節(jié)點,自動實現(xiàn)HA切換,前端業(yè)務(wù)不受影響
(3).數(shù)據(jù)庫層核心參數(shù)根據(jù)數(shù)據(jù)庫配置自適應(yīng)動態(tài)調(diào)整,無需人工干預
(4).自帶數(shù)據(jù)庫系統(tǒng)層監(jiān)控及報警功能
2.缺點
不能避免單節(jié)點壓力過高,只能單節(jié)點讀寫操作
MariaDB Galera Cluster
Galera Cluster是MariaDB的一個多活多主集群,其可以使得MariDB的所有節(jié)點保持同步,Galera為MariaDB提供了同步復制(相對于原生的異步復制),因此其可以保證數(shù)據(jù)庫層的HA,在數(shù)據(jù)方面完全兼容 MariaDB 和 MySQL,針對整個項目的層的數(shù)據(jù)庫HA需要使用中間件來實現(xiàn)HA(如LVS、haproxy…)
1.優(yōu)點:
(1).同步復制 Synchronous replication
(2).Active-active multi-master 拓撲邏輯
(3).可對集群中任一節(jié)點進行數(shù)據(jù)讀寫
(4).自動成員控制,故障節(jié)點自動從集群中移除
(5).自動節(jié)點加入
(6).真正并行的復制,基于行級
(7).直接客戶端連接,原生的 MySQL 接口
(8).每個節(jié)點都包含完整的數(shù)據(jù)副本
(9).多臺數(shù)據(jù)庫中數(shù)據(jù)同步由 wsrep 接口實現(xiàn)
2.缺點
(1).目前的復制僅僅支持InnoDB存儲引擎,任何寫入其他引擎的表,包括mysql.*表將不會復制,但是DDL語句會被復制的,因此創(chuàng)建用戶將會被復制,但是insert into mysql.user…將不會被復制的.
(2).DELETE操作不支持沒有主鍵的表,沒有主鍵的表在不同的節(jié)點順序?qū)⒉煌?如果執(zhí)行SELECT…LIMIT… 將出現(xiàn)不同的結(jié)果集.
(3).查詢?nèi)罩静荒鼙4嬖诒碇小H绻_啟查詢?nèi)罩?,只能保存到文件中?br />
(4).允許最大的事務(wù)大小由wsrep_max_ws_rows和wsrep_max_ws_size定義。任何大型操作將被拒絕。如大型的LOAD DATA操作。
(5).由于集群是樂觀的并發(fā)控制,事務(wù)commit可能在該階段中止。如果有兩個事務(wù)向在集群中不同的節(jié)點向同一行寫入并提交,失敗的節(jié)點將中止。對 于集群級別的中止,集群返回死鎖錯誤代碼(Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)).
(6).XA事務(wù)不支持,由于在提交上可能回滾。
(7).整個集群的寫入吞吐量是由最弱的節(jié)點限制,如果有一個節(jié)點變得緩慢,那么整個集群將是緩慢的。為了穩(wěn)定的高性能要求,所有的節(jié)點應(yīng)使用統(tǒng)一的硬件。
(8).集群節(jié)點建議最少3個。
(9).DDL操作會鎖住全表,整個集群會hang住,為了避免整個數(shù)據(jù)庫集群hang住,操作前需要修改schema 復制DDL的模式。
總結(jié):
根據(jù)以上的信息描述在單節(jié)點寫入的情況下,RDS MySQL能滿足業(yè)務(wù)的需要,如果滿足不了則可以用Galera Cluster集群部署三個節(jié)點,對于運維人員來說Galera Cluster相比于RDS MySQL維護成本較高,費用成本較低。