本文主要介紹mysql的高可用性方案(mysql數(shù)據(jù)庫(kù)高可用性架構(gòu)),下面一起看看mysql的高可用性方案(mysql數(shù)據(jù)庫(kù)高可用性架構(gòu))相關(guān)資訊。
高可用性架構(gòu)基本上是互聯(lián)網(wǎng)服務(wù)的一個(gè)標(biāo)準(zhǔn),它要求應(yīng)用服務(wù)和數(shù)據(jù)庫(kù)服務(wù)的高可用性。雖然互聯(lián)網(wǎng)服務(wù)是一天24小時(shí)可用的,但或多或少還是有一些服務(wù)是不可用的。例如,當(dāng)網(wǎng)頁(yè)可以 打不開,百度可以 找不到也沒有微博和。一般來(lái)說(shuō),高可用性措施在一年內(nèi)可以服務(wù)的程度不能作為參考時(shí)間。它必須實(shí)現(xiàn)三個(gè)9的可用性,并且一年內(nèi)只需要八小時(shí)的服務(wù)。但如果要做到五個(gè)9的可用性,只需要五分鐘,一年內(nèi)服務(wù)就會(huì)中斷。所以雖然每個(gè)公司都說(shuō)他們的服務(wù)是7 * 24,但實(shí)際上可以做到5,9甚至更少。國(guó)內(nèi)互聯(lián)網(wǎng)巨頭bat(百度、阿里巴巴、騰訊)都有因故障停機(jī)的問(wèn)題。對(duì)于一個(gè)系統(tǒng)來(lái)說(shuō),可能會(huì)有很多模塊,比如前端應(yīng)用、緩存、數(shù)據(jù)庫(kù)、搜索、消息隊(duì)列等等。為了保證整個(gè)系統(tǒng)的高可用性,每個(gè)模塊都需要高可用性。對(duì)于數(shù)據(jù)庫(kù)服務(wù)來(lái)說(shuō),高可用性可以更復(fù)雜,可以用于用戶服務(wù),不僅僅是訪問(wèn),還要保證正確性。因此,在討論數(shù)據(jù)庫(kù)的高可用性解決方案時(shí),還要考慮程序的數(shù)據(jù)一致性。主要討論了mysql數(shù)據(jù)庫(kù)的高可用性方案,并介紹了各種方案的特點(diǎn)和優(yōu)缺點(diǎn)。這篇文章是各種計(jì)劃的總結(jié)。希望能給大家一些建議,和大家一起探討。1。基于共享存儲(chǔ)方案的san方案:san(存儲(chǔ)區(qū)域網(wǎng)),簡(jiǎn)單來(lái)說(shuō)就是可以實(shí)現(xiàn)網(wǎng)絡(luò)中不同服務(wù)器之間的數(shù)據(jù)共享,共享存儲(chǔ)可以與數(shù)據(jù)庫(kù)服務(wù)器和存儲(chǔ)解耦。共享存儲(chǔ)時(shí),服務(wù)器可以掛載文件系統(tǒng)并正常運(yùn)行。如果服務(wù)器掛起,備用服務(wù)器可以掛載相同的文件系統(tǒng),執(zhí)行所需的恢復(fù)操作,然后啟動(dòng)mysql:優(yōu)點(diǎn):1。可以避免由存儲(chǔ)之外的組件導(dǎo)致的數(shù)據(jù)丟失。2。簡(jiǎn)單的部署、簡(jiǎn)單的交換邏輯和透明的應(yīng)用。3.確保主要數(shù)據(jù)的強(qiáng)一致性。局限性或缺點(diǎn):1。共享存儲(chǔ)是一個(gè)單點(diǎn)。如果共享存儲(chǔ)被掛起,數(shù)據(jù)將會(huì)丟失。2。價(jià)格比價(jià)格貴。2。基于磁盤的復(fù)制方案drbd方案:drbd(distributed replication block device)是一種磁盤復(fù)制技術(shù),可以達(dá)到類似san.dbrd的效果,是一種在linux內(nèi)核模塊中實(shí)現(xiàn)的塊級(jí)同步復(fù)制技術(shù)。它將主服務(wù)器的每個(gè)塊復(fù)制到另一個(gè)服務(wù)器上塊設(shè)備通過(guò)網(wǎng)卡并記錄在主設(shè)備提交塊. drbd類似st .,也有熱備用機(jī)。當(dāng)它開始提供服務(wù)時(shí),它將為故障機(jī)使用相同的數(shù)據(jù),但drbd的數(shù)據(jù)是復(fù)制的,不能共享。drbd的架構(gòu)圖如下:優(yōu)點(diǎn)uff1a 1。切換到應(yīng)用程序透明2。擔(dān)保人要求數(shù)據(jù)具有很強(qiáng)的一致性。局限性或缺點(diǎn):1。影響寫入性能,因?yàn)槊看螌懭氪疟P時(shí),基本上都需要與網(wǎng)絡(luò)服務(wù)器同步。2。通常,兩個(gè)節(jié)點(diǎn)被配置為同步,這導(dǎo)致可擴(kuò)展性差。3.圖書館可以 不提供閱讀服務(wù),浪費(fèi)資源。3.基于主從復(fù)制(單點(diǎn)寫入)方案,依靠底層共享存儲(chǔ)的磁盤復(fù)制技術(shù),解決了mysql服務(wù)器單點(diǎn)和磁盤的單點(diǎn)問(wèn)題。在實(shí)際生產(chǎn)環(huán)境中,高可用性很大程度上取決于mysql本身的復(fù)制,這使得一個(gè)或多個(gè)熱備份復(fù)制主機(jī)和exchange服務(wù)無(wú)法控制熱備份。下面的程序是基于主從復(fù)制方案,功能越來(lái)越強(qiáng)大,由簡(jiǎn)單到復(fù)雜,實(shí)現(xiàn)難度由易到難。可以根據(jù)實(shí)際情況選擇合適的方案。3.1簡(jiǎn)單/心跳。程序介紹:簡(jiǎn)單就是ha軟件。它的功能是檢測(cè)服務(wù)器(web服務(wù)器、db服務(wù)器等)的狀態(tài)。).檢測(cè)原理是模擬網(wǎng)絡(luò)請(qǐng)求檢測(cè),包括http _ get | ssl _ get | tcp _ check | smtp _ check | misc _ check等等。db服務(wù)器,主要是ip和端口(tcp_check),但這可能還不夠(比如數(shù)據(jù)庫(kù)服務(wù)器是只讀的),所以simple還支持一個(gè)簡(jiǎn)單的驗(yàn)證服務(wù)器,帶有自定義腳本。通過(guò)傾聽來(lái)監(jiān)控現(xiàn)狀。如果服務(wù)器出現(xiàn)故障,故障服務(wù)器將從系統(tǒng)中刪除。簡(jiǎn)單高可用架構(gòu),如下圖所示,簡(jiǎn)單軟件分別安裝在主服務(wù)器和從服務(wù)器上,配置相同的vip。vip層屏蔽的ip,應(yīng)用服務(wù)器獲得數(shù)據(jù)庫(kù)訪問(wèn)服務(wù)的vip。當(dāng)主人失敗時(shí),簡(jiǎn)單的感知會(huì)增強(qiáng)奴隸 的主人,并繼續(xù)為應(yīng)用層提供透明性。優(yōu)勢(shì)uff1a 1。安裝簡(jiǎn)單,當(dāng)2。主站故障,從站快速切換提供服務(wù)和透明應(yīng)用。局限性或缺點(diǎn):1。主ip需要在同一個(gè)網(wǎng)段。2。為了提供弱檢測(cè)機(jī)制,需要定制腳本來(lái)確定主機(jī)是否可以提供服務(wù),比如更新心跳表。3.不能保證數(shù)據(jù)的一致性。最初的mysql是異步復(fù)制的。如果主服務(wù)器發(fā)生故障,從服務(wù)器數(shù)據(jù)可能不是最新的,從而導(dǎo)致數(shù)據(jù)丟失。所以在切換時(shí),一定要考慮依賴延遲因子,確定切換策略。對(duì)于強(qiáng)一致性的要求,可以采用半同步和半同步來(lái)減少數(shù)據(jù)丟失。4.keepalived軟件本身可以 我不能保證。3.2.mha項(xiàng)目簡(jiǎn)介:mha (master high availability)是日本一位mysql daniel用perl編寫的mysql數(shù)據(jù)庫(kù)故障轉(zhuǎn)移方案,保證了數(shù)據(jù)庫(kù)的高可用性,存儲(chǔ)的二進(jìn)制日志從背面的主服務(wù)器上下來(lái)。mha可以最大限度地減少數(shù)據(jù)丟失。mha分為兩部分:mha管理器(管理節(jié)點(diǎn))和mha節(jié)點(diǎn)(數(shù)據(jù)節(jié)點(diǎn))。mha可以獨(dú)立服務(wù)器部署在不同的機(jī)器上來(lái)管理多個(gè)主從集群。mha節(jié)點(diǎn)運(yùn)行在每臺(tái)mysql服務(wù)器上。它的主要功能是切換二進(jìn)制日志,以確保切換是可能的。mha管理器定期檢查集群中主節(jié)點(diǎn)的數(shù)量。當(dāng)主設(shè)備出現(xiàn)故障時(shí),它可以自動(dòng)從最新的數(shù)據(jù)升級(jí)到新的主設(shè)備,然后所有其他從設(shè)備指向新的主設(shè)備。故障轉(zhuǎn)移方法對(duì)應(yīng)用程序是完全透明的。mha的結(jié)構(gòu)如下:mha故障轉(zhuǎn)移過(guò)程:發(fā)現(xiàn)主設(shè)備異常,做出一系列判斷,最終確定主設(shè)備下來(lái);檢查配置信息并列出當(dāng)前體系結(jié)構(gòu)中節(jié)點(diǎn)的狀態(tài)。c .處理失敗的主人,vip漂移,或者關(guān)閉基于腳本的mysqld服務(wù)定義。d、從所有比對(duì)網(wǎng)站中,選擇離該點(diǎn)最近的從站,然后與主站進(jìn)行比對(duì),獲取binlog差異,并復(fù)制到管理節(jié)點(diǎn);e .選擇候選節(jié)點(diǎn)的新?lián)碛姓吆托聯(lián)碛姓撸瑢⑿聯(lián)碛姓吲c網(wǎng)站進(jìn)行比較,獲得轉(zhuǎn)發(fā)差異。f、管理節(jié)點(diǎn)將二進(jìn)制日志差異復(fù)制給新的所有者,新所有者的二進(jìn)制日志差異的應(yīng)用與relaylog不同,最終獲取軌跡信息并接受寫請(qǐng)求(read_only = 0)。g .其他奴隸對(duì)比網(wǎng)站上的新奴隸,得到relaylog的差異,復(fù)制到對(duì)應(yīng)的奴隸;h .管理節(jié)點(diǎn)復(fù)制binlog中各從機(jī)的差異,比較exec_master_log_pos和read_master_log_pos,得到不同的日志;每個(gè)從設(shè)備將擁有所有不同的日志,然后重置從設(shè)備并重定向新的所有者;j .新的所有者重置從設(shè)備并清除從設(shè)備信息。優(yōu)勢(shì)uff1a 1。開源代碼方便了兩種業(yè)務(wù)場(chǎng)景的開發(fā)。2.在故障轉(zhuǎn)移的情況下,它可以修復(fù)多個(gè)從設(shè)備之間的差異日志,并最終保持所有從設(shè)備的數(shù)據(jù)一致。然后選擇一個(gè)充當(dāng)新的主,指向另一個(gè)從。3.您可以靈活選擇vip方案或全局目錄數(shù)據(jù)庫(kù)方案(將主ip映射更改為交換機(jī))。缺點(diǎn):1。不能保證強(qiáng)一致性,因?yàn)閺墓收现鳈C(jī)保存二進(jìn)制日志并不總是可行的,例如壞的主磁盤或失敗的ssh驗(yàn)證。2。支持一主多從體系結(jié)構(gòu)要求副本群集必須至少有三臺(tái)數(shù)據(jù)庫(kù)服務(wù)器,一臺(tái)主服務(wù)器和兩臺(tái)從服務(wù)器,一臺(tái)作為主服務(wù)器,一臺(tái)作為備用主服務(wù)器,另一臺(tái)作為從庫(kù)。3.在使用全局目錄數(shù)據(jù)庫(kù)時(shí),我們需要在切換程序時(shí)應(yīng)用感知變化,因此它對(duì)應(yīng)用程序是不透明的,所以我們需要保持切換對(duì)應(yīng)用程序透明,并且仍然依賴于vip。4。不適合大規(guī)模集群部署,配置比較復(fù)雜。5.mha管理節(jié)點(diǎn)本身不保證。3.3的高可用性。基于zookeeper程序介紹:從前面的討論來(lái)看,我們可以看到,無(wú)論是簡(jiǎn)單方案還是mha方案,都可以解決ha軟件的高可用性問(wèn)題,因?yàn)檫@本身就是一個(gè)點(diǎn)。那么如果ha也引入了多副本,那么,就帶來(lái)了新的問(wèn)題,如何保證2個(gè)頂級(jí)ha軟件之間的同步。如何保證不同時(shí)有多個(gè)ha交換操作,這兩個(gè)問(wèn)題本質(zhì)上是分布式系統(tǒng)的一致性問(wèn)題。所以分布式一致性協(xié)議類似于paxos raft推出的ha軟件,保證了ha軟件的可用性,zookeeper是典型的發(fā)布/訂閱模式的分布式數(shù)據(jù)管理和協(xié)調(diào)框架。方便構(gòu)建的核心功能是擁有豐富數(shù)據(jù)節(jié)點(diǎn)類型的管理員使用事件通知機(jī)制與觀察者進(jìn)行交叉,這涉及到一系列分布式應(yīng)用,如數(shù)據(jù)發(fā)布/訂閱、負(fù)載均衡和分布式協(xié)調(diào)/通知等。集群管理、主控選舉、分布式鎖和分布式隊(duì)列等。管理員是一個(gè)大話題,你可以從拋媚眼中獲得更多的信息,而我 我在這里討論如何解決ha飼養(yǎng)員的可用性問(wèn)題。結(jié)構(gòu)圖如下:圖中每個(gè)mysql節(jié)點(diǎn)都部署了ha客戶端,用于實(shí)時(shí)報(bào)告本地節(jié)點(diǎn)的心跳狀態(tài)。以城市動(dòng)物園為例,主庫(kù)崩潰,通過(guò)修改基于zookeeper節(jié)點(diǎn)(以下簡(jiǎn)稱zk)的信息來(lái)通知ha。高可用性節(jié)點(diǎn)注冊(cè)zk監(jiān)控事件。當(dāng)節(jié)點(diǎn)發(fā)生變化時(shí),會(huì)自動(dòng)感受ha,ha節(jié)點(diǎn)可以部署一個(gè)或多個(gè),主容災(zāi). ha節(jié)點(diǎn)通過(guò)zookeeper服務(wù)實(shí)現(xiàn)數(shù)據(jù)一致性。通過(guò)分布式鎖,多個(gè)ha節(jié)點(diǎn)無(wú)法保證同時(shí)切換到主從節(jié)點(diǎn),ha本身是無(wú)狀態(tài)的,所有mysql節(jié)點(diǎn)的狀態(tài)信息都存儲(chǔ)在zookeeper服務(wù)器中。在轉(zhuǎn)換過(guò)程中,ha會(huì)檢查mysql節(jié)點(diǎn)和交換機(jī)。發(fā)布后讓管理員看到交接過(guò)程:a.ha客戶端檢測(cè)到主人的異常,做出一系列判斷,最終確定主人;b. that客戶端刪除zk主節(jié)點(diǎn)信息;由于攔截機(jī)制,ha會(huì)注意到一個(gè)節(jié)點(diǎn)被刪除;d.ha重新檢查mysql節(jié)點(diǎn),比如建立連接,更新心跳表等。當(dāng)e .確認(rèn)異常時(shí),開關(guān)發(fā)出。讓 讓我們看看這個(gè)架構(gòu)能否保證ha本身的高可用性。(1)。如果ha客戶端本身掛起,mysql節(jié)點(diǎn)正常嗎?客戶管理mysql節(jié)點(diǎn)無(wú)法與管理員保持心跳。zk服務(wù)將刪除該節(jié)點(diǎn),ha將意識(shí)到這一變化,并準(zhǔn)備嘗試切換。在切換之前,它將被重新檢查。mysql節(jié)點(diǎn)正常時(shí),不會(huì)切換。(the.mysql節(jié)點(diǎn)和administrator s網(wǎng)?因?yàn)楦呖捎眯钥蛻舳撕凸?jié)點(diǎn)在同一個(gè)主機(jī)中,所以高可用性客戶端無(wú)法報(bào)告zk ;又是心跳。zk會(huì)刪除相應(yīng)的mysql節(jié)點(diǎn)信息,ha會(huì)審核。,還是不合格,開關(guān)。(3)哈掛了,表現(xiàn)如何?因?yàn)閔a是無(wú)狀態(tài)的,有多個(gè)副本,所以ha被掛起,不會(huì)影響整個(gè)系統(tǒng)。優(yōu)勢(shì)uff1a 1。保證了整個(gè)系統(tǒng)的高可用性。2的強(qiáng)一致性。主從依賴于mysql本身,比如半同步,或者周邊工具的補(bǔ)充策略,類似于mha。第三,擴(kuò)展性很強(qiáng),可以管理大規(guī)模集群。缺點(diǎn):1。zk介紹說(shuō),整個(gè)系統(tǒng)變得復(fù)雜了。4。第三部分討論基于集群(多點(diǎn)寫入)的方案基本上是目前市場(chǎng)的主流,由單點(diǎn)組成。雖然我們可以使用中間件來(lái)分段(切片),但我們?nèi)匀恢辉试S一個(gè)節(jié)點(diǎn)寫入相同的數(shù)據(jù)。從這個(gè)角度來(lái)看,上述方案是偽分布式的。下面兩種方案是真正分布式的,可以寫在多個(gè)節(jié)點(diǎn)的同一個(gè)數(shù)據(jù)上。理論上,這類似于oracle rac、emc 的greenplum分布式數(shù)據(jù)庫(kù)和mysql。主要有兩種解決方案:基于galera的medicine和ndb集群,mysql集群基于很多有限的ndb存儲(chǔ)引擎,medicine基于innodb引擎,但有其局限性,但由于應(yīng)用廣泛,有一定的參考價(jià)值。據(jù)我所知,公司在生產(chǎn)環(huán)境中使用pxc方案。pxc結(jié)構(gòu)圖(percona xtradb集群)如下:優(yōu)點(diǎn)uff1a 1。準(zhǔn)同步復(fù)制超過(guò)2。節(jié)點(diǎn)可以同時(shí)讀寫,可以實(shí)現(xiàn)寫擴(kuò)展,比切片方案更進(jìn)一步。三。自動(dòng)節(jié)點(diǎn)管理4。數(shù)據(jù)是嚴(yán)格一致的。5。服務(wù)非常到位缺點(diǎn):1。支持innodb引擎2。所有表都有主鍵。3.因?yàn)閷懭肱c其他節(jié)點(diǎn)同步,所以存在寫入擴(kuò)展問(wèn)題。4。非常依賴網(wǎng)絡(luò)的穩(wěn)定性,不適合遠(yuǎn)程同步。5。準(zhǔn)確地說(shuō),中間件的高可用性與否是特別相關(guān)的,因?yàn)榍袚Q是在數(shù)據(jù)庫(kù)級(jí)別進(jìn)行的,但中間層的引入使應(yīng)用程序更加透明。之前介紹的中間件,所有的方案基本都是依賴vip漂移機(jī)制或者不依賴vip,無(wú)法保證應(yīng)用的透明性。透明和高可用性應(yīng)用程序可以同時(shí)加入中間件層。此外,中間層也可以很容易地劃分和擴(kuò)展。代理的解決方案有很多,比如mysql代理和mysql的fabric,阿里巴巴coba和分時(shí)數(shù)據(jù)傳輸線等等。我們以fabric為例,框架的內(nèi)容是:連接應(yīng)用程序所需的fabric,然后節(jié)點(diǎn)通過(guò)xml-rpc協(xié)議連接到fabric。結(jié)構(gòu)節(jié)點(diǎn)依靠備份存儲(chǔ)(備份存儲(chǔ))來(lái)存儲(chǔ)整個(gè)高可用性群集的元數(shù)據(jù)信息。連接器讀取備份存儲(chǔ)信息,然后將元數(shù)據(jù)緩存到緩存中。這種方法的優(yōu)點(diǎn)是減少了相互連接的次數(shù)。管理節(jié)點(diǎn)交互的成本。每個(gè)ha組都有一個(gè)主節(jié)點(diǎn)和多個(gè)輔助節(jié)點(diǎn)(從節(jié)點(diǎn))。當(dāng)主節(jié)點(diǎn)出現(xiàn)異常時(shí),將從輔助節(jié)點(diǎn)中選擇最合適的節(jié)點(diǎn)升級(jí)到新的主節(jié)點(diǎn),其余節(jié)點(diǎn)將被重定向到新節(jié)點(diǎn)。這些都是自動(dòng)操作,不懂業(yè)務(wù)。ha切換后,需要通知連接器的元數(shù)據(jù)信息。優(yōu)勢(shì)uff1a 1。切換到應(yīng)用程序透明2。擴(kuò)展性,易于切片和擴(kuò)展3。它可以部署到整個(gè)機(jī)房缺點(diǎn):1。是一個(gè)比較新的組件,實(shí)際應(yīng)用場(chǎng)景不多。2。在沒有解決強(qiáng)一致性問(wèn)題的情況下,強(qiáng)一致性依賴于mysql本身(半同步)以及回滾和補(bǔ)充機(jī)制。綜上,介紹了幾種典型的高可用架構(gòu)mysql,包括共享存儲(chǔ)方案、磁盤復(fù)制方案和主從復(fù)制方案。對(duì)于主從復(fù)制方案,這很簡(jiǎn)單,mha和城市動(dòng)物園介紹了一下。每一個(gè)方案,總是可用的,具有很強(qiáng)的數(shù)據(jù)一致性,并切換到解釋應(yīng)用程序的透明性。個(gè)人認(rèn)為,基于mysql的復(fù)制方案是主流且成熟的。中間件和管理員的引入可以使系統(tǒng)可用性更高,支持更大的規(guī)模,但也對(duì)研發(fā)、運(yùn)維提出了更高的要求。所以選擇方案的選擇是基于業(yè)務(wù)場(chǎng)景和運(yùn)維規(guī)模。
了解更多mysql的高可用性方案(mysql數(shù)據(jù)庫(kù)高可用性架構(gòu))相關(guān)內(nèi)容請(qǐng)關(guān)注本站點(diǎn)。
筆記本電腦怎么用麥(臺(tái)式電腦怎么裝麥)
0x0000000c2藍(lán)屏代碼是什么意思(0xc00000c2藍(lán)屏代碼)
運(yùn)維工程師培訓(xùn),新能源充電樁運(yùn)維工程師培訓(xùn)3個(gè)月學(xué)費(fèi)多少錢
榮耀暢玩4pro(華為榮耀暢玩4)
windows10安裝寶塔(windows怎么裝寶塔)
mysql的高可用方案(mysql數(shù)據(jù)庫(kù)高可用架構(gòu))
蘋果m2芯片百度百科(iphone m2芯片)
win10如何開啟和關(guān)閉測(cè)試模式(win10如何開啟和關(guān)閉測(cè)試模式選項(xiàng))
鮑魚的家常做法
bitlocker解鎖后無(wú)法讀取文件(bitlocker無(wú)法繼續(xù)解密)
筆記本m2接口怎么安裝方法,m2接口的固態(tài)怎么裝
手機(jī)淘寶開店怎么開店(手機(jī)淘寶開店怎么開的怎么注冊(cè))
nokia638怎么設(shè)置鈴聲
4s怎么用搜狗輸入法,蘋果4S下載了輸入法可是用不了誰(shuí)能告訴我怎么設(shè)置
高通 專利(高通的專利費(fèi)還收多少年)
舊版賽爾號(hào)(賽爾號(hào)經(jīng)典版手游下載)
兩千一下的筆記本電腦
怎么恢復(fù)已經(jīng)刪除的照片,vivo怎么恢復(fù)已經(jīng)刪除的照片
白天支出(白天消費(fèi))
如何制作裝機(jī)u盤,這樣制作裝機(jī)u盤