本文主要給大家簡單講講mysql集群方案詳解,相關專業術語大家可以上網查查或者找一些相關書籍補充一下,這里就不涉獵了,我們就直奔mysql集群方案詳解主題吧,希望可以給大家帶來一些實際幫助。
集群的好處
集群要考慮的風險
@[toc]
mysql復制(MySQL Replication),是mysql自帶的功能。
原理簡介:
主從復制是通過重放binlog實現主庫數據的異步復制。即當主庫執行了一條sql命令,那么在從庫同樣的執行一遍,從而達到主從復制的效果。在這個過程中,master對數據的寫操作記入二進制日志文件中(binlog),生成一個 log dump 線程,用來給從庫的 i/o線程傳binlog。而從庫的i/o線程去請求主庫的binlog,并將得到的binlog日志寫到中繼日志(relaylog)中,從庫的sql線程,會讀取relaylog文件中的日志,并解析成具體操作,通過主從的操作一致,而達到最終數據一致。

MySQL Replication一主多從的結構,主要目的是實現數據的多點備份(沒有故障自動轉移和負載均衡)。相比于單個的mysql,一主多從下的優勢如下:
就各個集群方案來說,其優勢為:
其劣勢為:
mysql織物(MySQL Fabirc),是mysql官方提供的。
這是在MySQL Replication的基礎上,增加了故障檢測與轉移,自動數據分片功能。不過依舊是一主多從的結構,MySQL Fabirc只有一個主節點,區別是當該主節點掛了以后,會從從節點中選擇一個來當主節點。
就各個集群方案來說,其優勢為:
其劣勢為:
mysql集群(MySQL Cluster)也是mysql官方提供的。
MySQL Cluster是多主多從結構的
就各個集群方案來說,其優勢為:
其劣勢為:
官方的三兄弟的區別對比如下圖所示;

MMM是在MySQL Replication的基礎上,對其進行優化。
MMM(Master Replication Manager for MySQL)是雙主多從結構,這是Google的開源項目,使用Perl語言來對MySQL Replication做擴展,提供一套支持雙主故障切換和雙主日常管理的腳本程序,主要用來監控mysql主主復制并做失敗轉移。

注意:這里的雙主節點,雖然叫做雙主復制,但是業務上同一時刻只允許對一個主進行寫入,另一臺備選主上提供部分讀服務,以加速在主主切換時刻備選主的預熱。
就各個集群方案來說,其優勢為:
其劣勢為:
MHA是在MySQL Replication的基礎上,對其進行優化。
MHA(Master High Availability)是多主多從結構,這是日本DeNA公司的youshimaton開發,主要提供更多的主節點,但是缺少VIP(虛擬IP),需要配合keepalived等一起使用。
要搭建MHA,要求一個復制集群中必須最少有三臺數據庫服務器,一主二從,即一臺充當master,一臺充當備用master,另外一臺充當從庫。

就各個集群方案來說,其優勢為:
其劣勢為:
MHA架構實現讀寫分離,最佳實踐是在應用開發設計時提前規劃讀寫分離事宜,在使用時設置兩個連接池,即讀連接池與寫連接池,也可以選擇折中方案即引入SQL Proxy。但無論如何都需要改動代碼;
Galera Cluster是由Codership開發的MySQL多主結構集群,這些主節點互為其它節點的從節點。不同于MySQL原生的主從異步復制,Galera采用的是多主同步復制,并針對同步復制過程中,會大概率出現的事務沖突和死鎖進行優化,就是復制不基于官方binlog而是Galera復制插件,重寫了wsrep api。
異步復制中,主庫將數據更新傳播給從庫后立即提交事務,而不論從庫是否成功讀取或重放數據變化。這種情況下,在主庫事務提交后的短時間內,主從庫數據并不一致。
同步復制時,主庫的單個更新事務需要在所有從庫上同步 更新。換句話說,當主庫提交事務時,集群中所有節點的數據保持一致。
對于讀操作,從每個節點讀取到的數據都是相同的。對于寫操作,當數據寫入某一節點后,集群會將其同步到其它節點。

就各個集群方案來說,其優勢為:
其劣勢為:
不同主機的數據同步不再依賴于MySQL的原生復制功能,而是通過同步磁盤數據,來保證數據的一致性。
然后處理故障的方式是借助Heartbeat,它監控和管理各個節點間連接的網絡,并監控集群服務,當節點出現故障或者服務不可用時,自動在其他節點啟動集群服務。
SAN:共享存儲,主庫從庫用的一個存儲。SAN的概念是允許存儲設施和解決器(服務器)之間建立直接的高速連接,通過這種連接實現數據的集中式存儲。

就各個集群方案來說,其優勢為:
保證數據的強一致性;
其劣勢為:
DRDB:這是linux內核板塊實現的快級別的同步復制技術。通過各主機之間的網絡,復制對方磁盤的內容。當客戶將數據寫入本地磁盤時,還會將數據發送到網絡中另一臺主機的磁盤上,這樣的本地主機(主節點)與遠程主機(備節點)的數據即可以保證明時同步。

就各個集群方案來說,其優勢為:
相比于SAN儲存網絡,價格低廉;
其劣勢為:
對io性能影響較大;
Zookeeper使用分布式算法保證集群數據的一致性,使用zookeeper可以有效的保證proxy的高可用性,可以較好的避免網絡分區現象的產生。

就各個集群方案來說,其優勢為:
缺其劣勢為:
分布式一致性算法,Paxos 算法處理的問題是一個分布式系統如何就某個值(決議)達成一致。這個算法被認為是同類算法中最有效的。Paxos與MySQL相結合可以實現在分布式的MySQL數據的強一致性。
mysql集群方案詳解就先給大家講到這里,對于其它相關問題大家想要了解的可以持續關注我們的行業資訊。我們的板塊內容每天都會捕捉一些行業新聞及專業知識分享給大家的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。