本文主要給大家簡(jiǎn)單講講MySQL集群方案詳解,相關(guān)專業(yè)術(shù)語(yǔ)大家可以上網(wǎng)查查或者找一些相關(guān)書籍補(bǔ)充一下,這里就不涉獵了,我們就直奔mysql集群方案詳解主題吧,希望可以給大家?guī)?lái)一些實(shí)際幫助。
為雞東等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及雞東網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、雞東網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
集群的好處
集群要考慮的風(fēng)險(xiǎn)
@[toc]
mysql復(fù)制(MySQL Replication),是mysql自帶的功能。
原理簡(jiǎn)介:
主從復(fù)制是通過(guò)重放binlog實(shí)現(xiàn)主庫(kù)數(shù)據(jù)的異步復(fù)制。即當(dāng)主庫(kù)執(zhí)行了一條sql命令,那么在從庫(kù)同樣的執(zhí)行一遍,從而達(dá)到主從復(fù)制的效果。在這個(gè)過(guò)程中,master對(duì)數(shù)據(jù)的寫操作記入二進(jìn)制日志文件中(binlog),生成一個(gè) log dump 線程,用來(lái)給從庫(kù)的 i/o線程傳binlog。而從庫(kù)的i/o線程去請(qǐng)求主庫(kù)的binlog,并將得到的binlog日志寫到中繼日志(relaylog)中,從庫(kù)的sql線程,會(huì)讀取relaylog文件中的日志,并解析成具體操作,通過(guò)主從的操作一致,而達(dá)到最終數(shù)據(jù)一致。
MySQL Replication一主多從的結(jié)構(gòu),主要目的是實(shí)現(xiàn)數(shù)據(jù)的多點(diǎn)備份(沒(méi)有故障自動(dòng)轉(zhuǎn)移和負(fù)載均衡)。相比于單個(gè)的mysql,一主多從下的優(yōu)勢(shì)如下:
就各個(gè)集群方案來(lái)說(shuō),其優(yōu)勢(shì)為:
其劣勢(shì)為:
mysql織物(MySQL Fabirc),是mysql官方提供的。
這是在MySQL Replication的基礎(chǔ)上,增加了故障檢測(cè)與轉(zhuǎn)移,自動(dòng)數(shù)據(jù)分片功能。不過(guò)依舊是一主多從的結(jié)構(gòu),MySQL Fabirc只有一個(gè)主節(jié)點(diǎn),區(qū)別是當(dāng)該主節(jié)點(diǎn)掛了以后,會(huì)從從節(jié)點(diǎn)中選擇一個(gè)來(lái)當(dāng)主節(jié)點(diǎn)。
就各個(gè)集群方案來(lái)說(shuō),其優(yōu)勢(shì)為:
其劣勢(shì)為:
mysql集群(MySQL Cluster)也是mysql官方提供的。
MySQL Cluster是多主多從結(jié)構(gòu)的
就各個(gè)集群方案來(lái)說(shuō),其優(yōu)勢(shì)為:
其劣勢(shì)為:
官方的三兄弟的區(qū)別對(duì)比如下圖所示;
MMM是在MySQL Replication的基礎(chǔ)上,對(duì)其進(jìn)行優(yōu)化。
MMM(Master Replication Manager for MySQL)是雙主多從結(jié)構(gòu),這是Google的開源項(xiàng)目,使用Perl語(yǔ)言來(lái)對(duì)MySQL Replication做擴(kuò)展,提供一套支持雙主故障切換和雙主日常管理的腳本程序,主要用來(lái)監(jiān)控mysql主主復(fù)制并做失敗轉(zhuǎn)移。
注意:這里的雙主節(jié)點(diǎn),雖然叫做雙主復(fù)制,但是業(yè)務(wù)上同一時(shí)刻只允許對(duì)一個(gè)主進(jìn)行寫入,另一臺(tái)備選主上提供部分讀服務(wù),以加速在主主切換時(shí)刻備選主的預(yù)熱。
就各個(gè)集群方案來(lái)說(shuō),其優(yōu)勢(shì)為:
其劣勢(shì)為:
MHA是在MySQL Replication的基礎(chǔ)上,對(duì)其進(jìn)行優(yōu)化。
MHA(Master High Availability)是多主多從結(jié)構(gòu),這是日本DeNA公司的youshimaton開發(fā),主要提供更多的主節(jié)點(diǎn),但是缺少VIP(虛擬IP),需要配合keepalived等一起使用。
要搭建MHA,要求一個(gè)復(fù)制集群中必須最少有三臺(tái)數(shù)據(jù)庫(kù)服務(wù)器,一主二從,即一臺(tái)充當(dāng)master,一臺(tái)充當(dāng)備用master,另外一臺(tái)充當(dāng)從庫(kù)。
就各個(gè)集群方案來(lái)說(shuō),其優(yōu)勢(shì)為:
其劣勢(shì)為:
MHA架構(gòu)實(shí)現(xiàn)讀寫分離,最佳實(shí)踐是在應(yīng)用開發(fā)設(shè)計(jì)時(shí)提前規(guī)劃讀寫分離事宜,在使用時(shí)設(shè)置兩個(gè)連接池,即讀連接池與寫連接池,也可以選擇折中方案即引入SQL Proxy。但無(wú)論如何都需要改動(dòng)代碼;
Galera Cluster是由Codership開發(fā)的MySQL多主結(jié)構(gòu)集群,這些主節(jié)點(diǎn)互為其它節(jié)點(diǎn)的從節(jié)點(diǎn)。不同于MySQL原生的主從異步復(fù)制,Galera采用的是多主同步復(fù)制,并針對(duì)同步復(fù)制過(guò)程中,會(huì)大概率出現(xiàn)的事務(wù)沖突和死鎖進(jìn)行優(yōu)化,就是復(fù)制不基于官方binlog而是Galera復(fù)制插件,重寫了wsrep api。
異步復(fù)制中,主庫(kù)將數(shù)據(jù)更新傳播給從庫(kù)后立即提交事務(wù),而不論從庫(kù)是否成功讀取或重放數(shù)據(jù)變化。這種情況下,在主庫(kù)事務(wù)提交后的短時(shí)間內(nèi),主從庫(kù)數(shù)據(jù)并不一致。
同步復(fù)制時(shí),主庫(kù)的單個(gè)更新事務(wù)需要在所有從庫(kù)上同步 更新。換句話說(shuō),當(dāng)主庫(kù)提交事務(wù)時(shí),集群中所有節(jié)點(diǎn)的數(shù)據(jù)保持一致。
對(duì)于讀操作,從每個(gè)節(jié)點(diǎn)讀取到的數(shù)據(jù)都是相同的。對(duì)于寫操作,當(dāng)數(shù)據(jù)寫入某一節(jié)點(diǎn)后,集群會(huì)將其同步到其它節(jié)點(diǎn)。
就各個(gè)集群方案來(lái)說(shuō),其優(yōu)勢(shì)為:
其劣勢(shì)為:
不同主機(jī)的數(shù)據(jù)同步不再依賴于MySQL的原生復(fù)制功能,而是通過(guò)同步磁盤數(shù)據(jù),來(lái)保證數(shù)據(jù)的一致性。
然后處理故障的方式是借助Heartbeat,它監(jiān)控和管理各個(gè)節(jié)點(diǎn)間連接的網(wǎng)絡(luò),并監(jiān)控集群服務(wù),當(dāng)節(jié)點(diǎn)出現(xiàn)故障或者服務(wù)不可用時(shí),自動(dòng)在其他節(jié)點(diǎn)啟動(dòng)集群服務(wù)。
SAN:共享存儲(chǔ),主庫(kù)從庫(kù)用的一個(gè)存儲(chǔ)。SAN的概念是允許存儲(chǔ)設(shè)施和解決器(服務(wù)器)之間建立直接的高速連接,通過(guò)這種連接實(shí)現(xiàn)數(shù)據(jù)的集中式存儲(chǔ)。
就各個(gè)集群方案來(lái)說(shuō),其優(yōu)勢(shì)為:
保證數(shù)據(jù)的強(qiáng)一致性;
其劣勢(shì)為:
DRDB:這是linux內(nèi)核板塊實(shí)現(xiàn)的快級(jí)別的同步復(fù)制技術(shù)。通過(guò)各主機(jī)之間的網(wǎng)絡(luò),復(fù)制對(duì)方磁盤的內(nèi)容。當(dāng)客戶將數(shù)據(jù)寫入本地磁盤時(shí),還會(huì)將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)中另一臺(tái)主機(jī)的磁盤上,這樣的本地主機(jī)(主節(jié)點(diǎn))與遠(yuǎn)程主機(jī)(備節(jié)點(diǎn))的數(shù)據(jù)即可以保證明時(shí)同步。
就各個(gè)集群方案來(lái)說(shuō),其優(yōu)勢(shì)為:
相比于SAN儲(chǔ)存網(wǎng)絡(luò),價(jià)格低廉;
其劣勢(shì)為:
對(duì)io性能影響較大;
Zookeeper使用分布式算法保證集群數(shù)據(jù)的一致性,使用zookeeper可以有效的保證proxy的高可用性,可以較好的避免網(wǎng)絡(luò)分區(qū)現(xiàn)象的產(chǎn)生。
就各個(gè)集群方案來(lái)說(shuō),其優(yōu)勢(shì)為:
缺其劣勢(shì)為:
分布式一致性算法,Paxos 算法處理的問(wèn)題是一個(gè)分布式系統(tǒng)如何就某個(gè)值(決議)達(dá)成一致。這個(gè)算法被認(rèn)為是同類算法中最有效的。Paxos與MySQL相結(jié)合可以實(shí)現(xiàn)在分布式的MySQL數(shù)據(jù)的強(qiáng)一致性。
mysql集群方案詳解就先給大家講到這里,對(duì)于其它相關(guān)問(wèn)題大家想要了解的可以持續(xù)關(guān)注我們的行業(yè)資訊。我們的板塊內(nèi)容每天都會(huì)捕捉一些行業(yè)新聞及專業(yè)知識(shí)分享給大家的。