一、MHA概述
MHA(Mater High Availability)是一套非常流行和實(shí)用的MySQL高可用解決方案軟件,保證MySQL主從復(fù)制集群中主庫的高可用性,保證集群業(yè)務(wù)不受影響。當(dāng)master異常宕機(jī)后,MHA能夠保證在1~30s的時(shí)間內(nèi)實(shí)現(xiàn)故障轉(zhuǎn)移,選擇一個(gè)最優(yōu)slave升為最新master,同時(shí)保持?jǐn)?shù)據(jù)一致性的狀態(tài),以及將整個(gè)集群的所有數(shù)據(jù)損失降到最低。因此MHA方案十分受歡迎。
二、MHA架構(gòu)
MHA由Manager(管理節(jié)點(diǎn))和Node(數(shù)據(jù)節(jié)點(diǎn))組成。Manager服務(wù)可以運(yùn)行在一臺(tái)讀立服務(wù)器(虛擬機(jī))上管理多個(gè)主從集群,也可以是某一個(gè)從節(jié)點(diǎn)或者應(yīng)用服務(wù)器節(jié)點(diǎn),而Node服務(wù)需要運(yùn)行在每一個(gè)MySQL服務(wù)器上。Manager會(huì)定時(shí)通過主庫上的Node服務(wù)監(jiān)控主庫,確保主庫出現(xiàn)故障時(shí)可自動(dòng)(或指定)將最優(yōu)從庫升為新主庫,讓所有從庫與最新master保持正常。
三、切換原理
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供蟠龍網(wǎng)站建設(shè)、蟠龍做網(wǎng)站、蟠龍網(wǎng)站設(shè)計(jì)、蟠龍網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、蟠龍企業(yè)網(wǎng)站模板建站服務(wù),十載蟠龍做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
3.1 MHA自動(dòng)切換的原理:
MHA的全名叫做mysql-master-ha,配置后可以在10-30秒內(nèi)完成master自動(dòng)切換,切換過程如下:
1. 檢測(cè)master的狀態(tài),方法是一秒一次“ SELECT 1 As Value”,發(fā)現(xiàn)沒有響應(yīng)后會(huì)重復(fù)3次檢查,如果還沒有響應(yīng),shutdown并再重復(fù)一次SELECT 1 As Value確認(rèn)master關(guān)閉
2. 確認(rèn)SSH到master所在的機(jī)器是否可達(dá)
3. 給出消息:Connecting to a master server failed,并開始讀取配置文件masterha_default.conf和app1.conf
4. 確認(rèn)復(fù)制切換模式: [info] GTID failover mode = 1
5. 報(bào)告整個(gè)架構(gòu)中的機(jī)器存活情況
6. 檢查存活的實(shí)例版本、GTID開啟情況、是否開啟read_only以及復(fù)制過濾情況
7. 接下來就是在GTID復(fù)制基礎(chǔ)上的切換過程
(1) 配置檢查階段,具體檢查如下
(2)徹底關(guān)閉master連接的階段,避免master未關(guān)閉導(dǎo)致的腦裂,關(guān)閉完成后給出報(bào)告
(3)master恢復(fù)階段:
?1 確認(rèn)relay log最新的slave實(shí)例
?2 確定新的master
如果在配置文件中設(shè)置了候選master,會(huì)直接確定預(yù)設(shè)機(jī)器實(shí)例為master;如果沒有預(yù)設(shè),會(huì)選擇含有最新的relay log的那個(gè)slave
?3 確認(rèn)新的master后,會(huì)先設(shè)置sql_log_bin=0以阻塞master日志寫入使其他slave趕上復(fù)制,應(yīng)用該最新relay log,最終獲得這個(gè)層次的數(shù)據(jù)一致性,之后再set sql_log_bin=1使恢復(fù)日志寫入。可以通過半同步復(fù)制來解決無法ssh到master所在機(jī)器所造成的事務(wù)丟失問題
待全部數(shù)據(jù)一致后,通過show master status確定新master的日志位置并在其他slave上執(zhí)行change master語句創(chuàng)建新的主從連接
該階段成果后給出報(bào)告
Fri Jul 1 13:35:33 2016 - [info] ** Finished master recovery successfully.
Fri Jul 1 13:35:33 2016 - [info] * Phase 3: Master Recovery Phase completed.
(4)slaves恢復(fù)階段:
先停止IO線程,等待SQL線程執(zhí)行完成后,stop slave,清除原slave信息,重新change master指向新的master,start slave ,over
(5)清除新選出的master上的slave信息
reset slave all;
至此,整個(gè)切換過程完成,最后給出切換報(bào)告
3.2 MHA在線切換的原理:
1. 檢查當(dāng)前的配置信息及主從服務(wù)器的信息
包括讀取MHA的配置文件/etc/masterha/app1.cnf及檢查當(dāng)前slave的健康狀態(tài)
2. 阻止對(duì)當(dāng)前master的更新
主要通過如下步驟:
1> 等待1.5s($time_until_kill_threads*100ms),等待當(dāng)前連接斷開。
2> 執(zhí)行 read_only=1,阻止新的DML操作
3> 等待0.5s,等待當(dāng)前DML操作完成。
4> kill掉所有連接。
5> FLUSH NO_WRITE_TO_BINLOG TABLES
6> FLUSH TABLES WITH READ LOCK
3. 等待新master執(zhí)行完所有的relay log
Waiting to execute all relay logs on 192.168.244.20(192.168.244.20:3306)..
4. 將新master的read_only設(shè)置為off,并添加VIP
5. slave切換到新master上。
1> 等待slave(192.168.244.30)應(yīng)用完原主從復(fù)制產(chǎn)生的relay log,然后執(zhí)行change master操作切換到新master上。
2> 釋放原master上加的鎖。
3> 因masterha_master_switch命令行中帶有--orig_master_is_new_slave參數(shù),故原master也切換為新master的從。
6. 清理新master的相關(guān)信息。
主要是執(zhí)行了reset slave all操作,清除之前的復(fù)制信息。
注釋:應(yīng)用訪數(shù)據(jù)集群時(shí)可以采用keepalived 。
三、MySQL復(fù)制
異步復(fù)制(Asynchronous replication)
MySQL默認(rèn)的復(fù)制即是異步的,主庫在執(zhí)行完客戶端提交的事務(wù)后會(huì)立即將結(jié)果返給給客戶端,并不關(guān)心從庫是否已經(jīng)接收并處理,這樣就會(huì)有一個(gè)問題,主如果crash掉了,此時(shí)主上已經(jīng)提交的事務(wù)可能并沒有傳到從上,如果此時(shí),強(qiáng)行將從提升為主,可能導(dǎo)致新主上的數(shù)據(jù)不完整。
全同步復(fù)制(Fully synchronousreplication)
指當(dāng)主庫執(zhí)行完一個(gè)事務(wù),所有的從庫都執(zhí)行了該事務(wù)才返回給客戶端。因?yàn)樾枰却袕膸靾?zhí)行完該事務(wù)才能返回,所以全同步復(fù)制的性能必然會(huì)收到嚴(yán)重的影響。
半同步復(fù)制(Semisynchronous replication)
介于異步復(fù)制和全同步復(fù)制之間,主庫在執(zhí)行完客戶端提交的事務(wù)后不是立刻返回給客戶端,而是等待至少一個(gè)從庫接收到并寫到relay log中才返回給客戶端。相對(duì)于異步復(fù)制,半同步復(fù)制提高了數(shù)據(jù)的安全性,同時(shí)它也造成了一定程度的延遲,這個(gè)延遲最少是一個(gè)TCP/IP往返的時(shí)間。所以,半同步復(fù)制最好在低延時(shí)的網(wǎng)絡(luò)中使用。
異步復(fù)制
MySQL—MHA架構(gòu)圖
文章名稱:MySQLMHA應(yīng)用實(shí)踐(基礎(chǔ)知識(shí))
瀏覽路徑:http://www.chinadenli.net/article38/joijsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)頁設(shè)計(jì)公司、品牌網(wǎng)站制作、虛擬主機(jī)、關(guān)鍵詞優(yōu)化、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)