歡迎轉(zhuǎn)載,請注明作者、出處。
創(chuàng)新互聯(lián)建站長期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為沈北新企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,沈北新網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
MySQL-Transefer(下稱Transfer)是一個(gè)基于MySQL+patch后得到的主從同步工具。
其主要目的是為了解決原版本的主從同步里,從庫是單線程apply主庫的binlog,導(dǎo)致的延遲。
MySQL5.6以后的版本,從庫即可多現(xiàn)在apply主庫的binlog。
對于數(shù)據(jù)實(shí)時(shí)性要求不是特別嚴(yán)格的應(yīng)用,只需要通過廉價(jià)的pc server 來擴(kuò)展Slave 的數(shù)量,將讀壓力分散到多臺Slave 的機(jī)器上面,即可通過分散單臺數(shù)據(jù)庫服務(wù)器的讀壓力來解決數(shù)據(jù)庫端的讀性能瓶頸,畢竟在大多數(shù)數(shù)據(jù)庫應(yīng)用系統(tǒng)中的讀壓力還是要比寫壓力大很多。這在很大程度上解決了目前很多中小型網(wǎng)站的數(shù)據(jù)庫壓力瓶頸問題,甚至有些大型網(wǎng)站也在使用類似方案解決數(shù)據(jù)庫瓶頸。
搭建成一個(gè)Dual Master 環(huán)境,并不是為了讓兩端都提供寫的服務(wù)。在正常情況下,我們都只會將其中一端開啟寫服務(wù),另外一端僅僅只是提供讀服務(wù),或者完全不提供任何服務(wù),僅僅只是作為一個(gè)備用的機(jī)器存在。主要還是為了避免數(shù)據(jù)的沖突,防止造成數(shù)據(jù)的不一致性。因?yàn)榧词乖趦蛇厛?zhí)行的修改有先后順序,但由于Replication 是異步的實(shí)現(xiàn)機(jī)制,同樣會導(dǎo)致即使晚做的修改也可能會被早做的修改所覆蓋
通過Dual Master 復(fù)制架構(gòu),我們不僅能夠避免因?yàn)檎5某R?guī)維護(hù)操作需要的停機(jī)所帶來的重新搭建Replication 環(huán)境的操作,因?yàn)槲覀內(nèi)魏我欢硕加涗浟俗约寒?dāng)前復(fù)制到對方的什么位置了,當(dāng)系統(tǒng)起來之后,就會自動開始從之前的位置重新開始復(fù)制,而不需要人為去進(jìn)行任何干預(yù),大大節(jié)省了維護(hù)成本。
在MySQL Cluster 主配置文件(在管理節(jié)點(diǎn)上面,一般為config.ini)中,有一個(gè)非常重要的參數(shù)叫NoOfReplicas,這個(gè)參數(shù)
指定了每一份數(shù)據(jù)被冗余存儲在不同節(jié)點(diǎn)上面的份數(shù),該參數(shù)一般至少應(yīng)該被設(shè)置成2
mysql cluster成本更低,oracle
rac更成熟,而且應(yīng)用案例很多;
mysql cluster雖然設(shè)計(jì)很好,但是功能實(shí)現(xiàn)還不夠完美,目前應(yīng)用案例并不多,更多的案例是mysql replication
因?yàn)镸ySQL Cluster將數(shù)據(jù)分布到幾個(gè)NDB節(jié)點(diǎn)之上,連接查詢時(shí),如果需要連接的表位于不同的NDB節(jié)點(diǎn)上,就需要將不同節(jié)點(diǎn)上的數(shù)據(jù)拿到本地再進(jìn)行連接查詢,這樣對資源消耗比較大。(不過在MySQL Cluster7.3版本中,增加了適應(yīng)性join查詢,減小了以往join查詢對資源的消耗)
Heartbeat是Linux-HA工程的一個(gè)組件。heartbeat最核心的包括兩個(gè)部分:心跳監(jiān)測和資源接管。在指定的時(shí)間內(nèi)未收到對方發(fā)送的報(bào)文,那么就認(rèn)為對方失效,這時(shí)需啟動資源接管模塊來接管運(yùn) 行在對方主機(jī)上的資源或者服務(wù)。
比如用shell腳本監(jiān)測到master的mysql不可用就將主上的heartbeat停掉,這樣就會切換到backup中去
DRBD是通過網(wǎng)絡(luò)來實(shí)現(xiàn)塊設(shè)備的數(shù)據(jù)鏡像同步的一款開源Cluster軟件。
Lvs是一個(gè)虛擬的服務(wù)器集群系統(tǒng),可以實(shí)現(xiàn)LINUX平臺下的簡單負(fù)載均衡。
keepalived是一個(gè)類似于layer3, 4 & 5交換機(jī)制的軟件,主要用于 主機(jī)與備機(jī) 的故障轉(zhuǎn)移。
高可用web架構(gòu): LVS+keepalived+nginx+apache+php+eaccelerator,也常與MySQL數(shù)據(jù)庫一起使用
MMM即Master-Master Replication Manager for MySQL(mysql主主復(fù)制管理器)是一套靈活的腳本程序?用來對mysql replication進(jìn)行監(jiān)控和故障遷移?并能管理mysql Master-Master復(fù)制的配置 。附帶的工具套件可以實(shí)現(xiàn)多個(gè)slaves的read負(fù)載均衡
HAProxy提供高可用性、負(fù)載均衡,比較適合負(fù)載特大的web站點(diǎn)。