概念: 主庫(kù)提供讀寫(xiě)操作,從庫(kù)對(duì)外提供讀操作。
主從復(fù)制:涉及到
?2個(gè)日志(binlog、relaylog日志)、
?3個(gè)線程:master(dump線程)、slave(I/O線程、SQL線程)
主dump線程:數(shù)據(jù)庫(kù)中數(shù)據(jù)更新時(shí),創(chuàng)建一個(gè)dump線程通知slave有數(shù)據(jù)更新,傳給slave的IO線程(binlog和更新位置傳給slave I/O 線程)
I/O線程:接收到dump線程發(fā)來(lái)的 binlog文件,存放到本地relay log中
sql線程:讀取relay log中的內(nèi)容,本地做redo操作,將主庫(kù)事件本地執(zhí)行一遍,最終保證主從數(shù)據(jù)的一致性
3、基本過(guò)程:1、主庫(kù)寫(xiě)入數(shù)據(jù)并且生成binlog文件,即MySQL將事務(wù)串行的寫(xiě)入二進(jìn)制日志
2、master通知存儲(chǔ)引擎提交事務(wù)
3、從服務(wù)器IO線程連接至master,請(qǐng)求binlog 指定位置讀取到從庫(kù)
4、主服務(wù)器接收到請(qǐng)求,會(huì)根據(jù)slave請(qǐng)求信息分批讀取binlog文件,返回給從庫(kù)IO線程
5、IO線程獲取到maser的日志內(nèi)容、文件、問(wèn)之后,會(huì)將binlog寫(xiě)到slave自身的relay log中。
6、從服務(wù)器中SQL 監(jiān)測(cè)到本地Relay Log中新增了日志內(nèi)容,翻譯成SQL 執(zhí)行,并更新從庫(kù)數(shù)據(jù)
優(yōu)點(diǎn):? 1、故障轉(zhuǎn)移-高可用? 主服務(wù)宕機(jī)后,可以由從服務(wù)切換成為主服務(wù)
? 2、讀寫(xiě)分離? ?數(shù)據(jù)庫(kù)讀請(qǐng)求從服務(wù)分擔(dān)(一些查詢大請(qǐng)求,僅查從庫(kù))
? 3、數(shù)據(jù)安全? ?數(shù)據(jù)的熱備,后備數(shù)據(jù)庫(kù),避免數(shù)據(jù)丟失
缺點(diǎn):? 1、正常情況下,數(shù)據(jù)也會(huì)不能實(shí)時(shí)同步
2、主從服務(wù),主機(jī)掛掉,數(shù)據(jù)丟失問(wèn)題(mysql默認(rèn)異步復(fù)制,設(shè)置半同步復(fù)制)
半同步復(fù)制:主庫(kù)執(zhí)行完客戶端提交的事務(wù)后,等待至少一個(gè)從庫(kù)接收并寫(xiě)到relay log中,才返回。等待確認(rèn)時(shí),默認(rèn)會(huì)等10秒,如果超過(guò)10秒沒(méi)有收到ack,會(huì)降級(jí)成異步復(fù)制。
? 3、主庫(kù)宕機(jī),無(wú)法自動(dòng)切換
? 二、高可用方案? ? ? ?? ?2.1 MMM有一套腳本對(duì)集群進(jìn)行監(jiān)控和故障轉(zhuǎn)移,需要2個(gè)master,通過(guò)一個(gè)VIP機(jī)制保證集群高可用,當(dāng)主節(jié)點(diǎn)故障,vip從原來(lái)的主節(jié)點(diǎn)漂移到其它節(jié)點(diǎn)。
優(yōu)點(diǎn):
1、部署簡(jiǎn)單,不需要額外開(kāi)發(fā)腳本
2、高可用,出現(xiàn)故障自動(dòng)切換
缺點(diǎn):
1、故障簡(jiǎn)單粗暴,容易丟失事務(wù),建議采用半同步復(fù)制方式,減少失敗的概率
2、社區(qū)缺少維護(hù),不支持GTID
適用場(chǎng)景:
1、讀寫(xiě)都需要高可用
2、基于binlog復(fù)制
2.2 MHA(公司主流使用)? 一個(gè)mysql解決方案,通過(guò)一套腳本來(lái)保證數(shù)據(jù)庫(kù)系統(tǒng)的高可用.在宕機(jī)的時(shí)間內(nèi)(通常10—30秒內(nèi)),完成故障切換,部署MHA,可避免主從一致性問(wèn)題,
?優(yōu)點(diǎn):
? 1、支持日志點(diǎn)復(fù)制、GTID復(fù)制
? 2、同MMM相比,會(huì)嘗試從舊的Master中恢復(fù)舊的二進(jìn)制日志,未必每次都能成功
?缺點(diǎn):
?1、需要自行開(kāi)發(fā)vip轉(zhuǎn)移腳本
?2、只監(jiān)控Master狀態(tài),未監(jiān)控Slave狀態(tài)
2.3 MGR?mysql 5.7.17版本推出的組復(fù)制機(jī)制,主要是解決傳統(tǒng)?異步復(fù)制和半同步復(fù)制的數(shù)據(jù)一致性問(wèn)題
由若干個(gè)節(jié)點(diǎn)共同組成一個(gè)復(fù)制組,一個(gè)事務(wù)提交后,必須經(jīng)過(guò)超過(guò)半數(shù)節(jié)點(diǎn)的決議并通過(guò)后,才可以提交。
? 優(yōu)點(diǎn):
1、基本無(wú)延遲,延遲比異步的小很多
2、數(shù)據(jù)的強(qiáng)一致性,可以保證數(shù)據(jù)事務(wù)不丟失
?缺點(diǎn):
1、僅支持innodb,且每個(gè)表必須提供主鍵
2、只能用在GTID模式下,且日志格式為row格式
適用場(chǎng)景:
? 1、對(duì)主從延遲比較敏感
? 2、數(shù)據(jù)強(qiáng)一致的場(chǎng)景
1、從庫(kù)性能比主庫(kù)差
2、從庫(kù)讀耗費(fèi)大量cpu資源
3、大事務(wù)執(zhí)行(比如 insert ... select ...,產(chǎn)生多條日志,只能等事務(wù)提交才可以傳輸)
4、主庫(kù)DDl(alter、drop、create )
比如主庫(kù)增加字段執(zhí)行很長(zhǎng)時(shí)間,從庫(kù)也消耗很多時(shí)間
5、鎖沖突
從庫(kù)一些select? ... for update
減少主從延遲:1、提供從庫(kù)機(jī)器的配置,提供主庫(kù)寫(xiě)與從讀的效率差
?2、優(yōu)化sql,避免慢sql
?3、降低多線程大事務(wù)并發(fā)執(zhí)行的概率
? 4、縮短主庫(kù)與從庫(kù)服務(wù)器的距離,提升端口帶寬,減少binlog延時(shí)
? 5、打開(kāi)參數(shù)配置,設(shè)置多個(gè)庫(kù)并行復(fù)制
?
1、開(kāi)啟mysql并行復(fù)制
設(shè)置slave_parallel_workers >0
2、 slave_parallel_type = LOGICAL_CLOCK 基于組提交的并行復(fù)制
DATABASE .. 庫(kù)...
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁(yè)標(biāo)題:Mysql主從架構(gòu)及幾種高可用方案-創(chuàng)新互聯(lián)
標(biāo)題URL:http://chinadenli.net/article12/dgjddc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、搜索引擎優(yōu)化、電子商務(wù)、網(wǎng)站策劃、動(dòng)態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化
聲明:本網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容