1,MySQL Cluster mysql
其實是在無共享存儲設備的狀況下實現的一種徹底分佈式數據庫系統,其主要經過NDB Cluster(簡稱NDB)存儲引擎來實現。全部數據和索引都必須裝載在內存中才可以正常運行,可是最新的MySQL Cluster 版本已經能夠作到僅僅將全部索引和索引數據裝載在內存中便可,實際的數據能夠不用所有裝載到內存中。sql
mysql cluster適合的場景爲:shell
具備很是高的併發需求,對可用性要求較高,或是數據須要分片的遵照SQL標準的傳統RDBMS系統。數據庫
Mysql-cluster的優缺點
優勢:
a) 99.999 %的高可用性
b) 快速的自動失效切換
c) 靈活的分佈式體系結構,沒有單點故障
d) 高吞吐量和低延遲
e) 可擴展性強,支持在線擴容
缺點:
a) 存在不少限制,好比:不支持外鍵,數據行不能超過8K(不包括BLOB和text中的數據)
b) 部署、管理、配置很複雜
c) 佔用磁盤空間大,內存大
d) 備份和恢復不方便
e) 重啓的時候,數據節點將數據load到內存須要很長時間。後端
2,Lvs+Keepalived+Mysql單點寫入主主同步高可用方案:安全
lvs提供負載均衡,keepalived做爲故障轉移,提升系統的可用性。可是通常的mysql高可用爲了實現mysql數據的一致性,通常都是採用單點寫入。服務器
適合的場景:併發
適用於只有兩臺數據庫服務器而且尚未實現數據庫的讀寫分離的狀況,讀和寫都配置VIP。這個方案可以便於單臺數據庫的管理維護以及切換工做。好比進行大表的表結構更改、數據庫的升級等都是很是方便的。負載均衡
優勢:
安裝配置簡單,實現方便,高可用效率好,能夠根據服務與系統的可用性多方面進行切換。
能夠將寫VIP和讀VIP分別進行設置,爲讀寫分離作準備。
擴展不是很方便。
能夠在後面添加多個從服務器,並作到負載均衡。
缺點:
在啓動或者恢復後會當即替換掉定義的sorry_server,所以若是要實現指定條件替換或者不替換須要經過其餘方式實現,好比:臨時更改mysql的端口等。
切換須要1s左右的時間。,分佈式
3,Heartbeat高可用Mysql主主同步方案:
Heartbeat雙機熱備軟件來保證數據庫的高穩定性和連續性,數據的一致性由DRBD這個工具來保證。默認狀況下只有一臺mysql在工做,當主mysql服務器出現問題後,系統將自動切換到備機上繼續提供服務,當主數據庫修復完畢,又將服務切回繼續由主mysql提供服務。
適用場景:
該方案適合只有兩臺數據庫的狀況,訪問量不大,不須要實現讀寫分離的狀況
優勢:
配置簡單、,可配置主機恢復後是否切換回master。不存在單點故障。
缺點:
當mysql服務掛掉或者不可用的狀況下不能進行自動切換,須要經過crm模式實現或者額外的腳本實現(好比shell腳本監測到master的mysql不可用就將主上的heartbeat停掉,這樣就會切換到backup中去)。
默認啓動以及切換後的backup話mysql不會啓動起來,所以這對於mysql複製是很不利的。所以須要作好監控,發生切換之後須要手動去啓動。或者mysql之間不使用複製,而是用共享存儲或者DRBD,這樣能解決這個問題。 不方便擴展。 可能會發生腦裂問題
4,MMM高可用mysql方案
MMM即Master-Master Replication Manager for MySQL(mysql主主複製管理器),MySQL自己沒有提供replication failover的解決方案,經過MMM方案能實現服務器的故障轉移,從而實現mysql的高可用。MMM不只能提供浮動IP的功能,更難得的是若是當前的主服務器掛掉後,會將你後端的從服務器自動轉向新的主服務器進行同步複製,不用手工更改同步配置。
適用場景:MMM的適用場景爲數據庫訪問量大,業務增加快,而且能實現讀寫分離的場景。優勢:安全性、穩定性高,可擴展性好,高可用,當主服務器掛掉之後,另外一個主當即接管,其餘的從服務器能自動切換,不用人工干預。缺點:至少三個節點,對主機的數量有要求,須要實現讀寫分離,對程序來講是個挑戰。