mysql中三種復制機制異步復制,半同步復制和并行復制詳細介紹-創(chuàng)新互聯(lián)

下面一起來了解下mysql中三種復制機制異步復制,半同步復制和并行復制,相信大家看完肯定會受益匪淺,文字在精不在多,希望mysql中三種復制機制異步復制,半同步復制和并行復制這篇短內(nèi)容是你想要的。

創(chuàng)新互聯(lián)建站服務項目包括敘永網(wǎng)站建設、敘永網(wǎng)站制作、敘永網(wǎng)頁制作以及敘永網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,敘永網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到敘永省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!

**# 異步復制

異步復制是MySQL自帶的最原始的復制方式,主庫和備庫成功建立復制關系后,在備庫上會有一個IO線程去主庫拉取binlog,并將binlogx到本地,就是下圖中Relaylog,然后備庫會開啟另外一個SQL線程取回放Relay  log,通過這種方式達到Master-Slave數(shù)據(jù)同步的目的。

通常情況下,slave是只讀的,可以承擔一部分讀流量,而且可以根據(jù)實際需要,添加一個或者多個slave,這樣在一定程度上可以緩解主庫的讀壓力;

   另一方面,若Master出現(xiàn)異常(crash,硬件故障等),無法對外提供服務,此時Slave可以承擔起master的重任,避免了單點的產(chǎn)生,所以復制就是為容災和提高性能而生。

**  半同步復制**
**1.概念**
一般情況下,異步復制就已經(jīng)足夠應付了,但由于是異步復制,備庫極有可能是落后于主庫,特別是極端情況下,我們無法保證主備數(shù)據(jù)是嚴格一致的(即使我們觀察到Seconds  Behind  Master這個值為0)

比如,當用戶發(fā)起commit命令時,Master并不關心slave的執(zhí)行狀態(tài),執(zhí)行成功后,立即返回給用戶。試想下,若一個事務提交后,master成功返回給用戶后crash,這個事務的binlog還沒來得及傳遞到slave,那么slave相對于master而言就少了一個事務,此時主備就不一致了。對于要求強一致的業(yè)務是不可以接受的,半同步復制就是為了解決數(shù)據(jù)一致性而產(chǎn)生的。

為什么叫半同步復制?我們來先說說同步復制,所謂同步復制就是一個事務在master和slave都執(zhí)行后,才返回給用戶執(zhí)行成功。這里核心是說master和slave要么都執(zhí)行,要么都不執(zhí)行,涉及到2pc(2  phrase  commit)。而MySQL只實現(xiàn)了本地redo-log和binlog的2PC,但并沒有實現(xiàn)master和slave的2PC,所以不是嚴格意義上的同步復制。而MySQL半同步復制不要求slave執(zhí)行,而僅僅是接收到日志后,就通知master可以返回了。

  這里關鍵點是slave 接受日志后是否執(zhí)行,若執(zhí)行后才通知master則是同步復制,若僅僅是接受日志成功,則是半同步復制。

   半同步復制如何實現(xiàn)?半同步復制實現(xiàn)的關鍵點是master對于事務提交過程特殊處理。目前實現(xiàn)半同步復制主要是有兩種模式,AFTER_SYNC模式和AFER_COMMIT模式。兩種方式的主要區(qū)別在與是否在存儲引擎提交后等待slave的ACK.

   2、AFTER_COMMIT模式
      先來看看AFTER_COMMIT模式,start和End分別表示用戶發(fā)起commit命令和master返回給用戶的時間點,中間部分就是整個commit過程master和slave做的事情。

         master提交時,會首先將該事務的redo  log刷入磁盤(這里其實還涉及到兩階段提交的問題),然后進入Inodb  commit過程,這個步驟主要是釋放鎖,標記事務為提交狀態(tài)(其他用戶可以看到該事務的更新),這個過程完成后,等待slave發(fā)送ack消息,等到slave的響應后,master才成功返回給用戶,master和slave的同步邏輯,是master-slave一致性的保證。

     3、AFTER_SYNC模式
     與AFTER_COMMIT相比,Master在AFTER_SYNC模式下,fsync  binlog后,就開始等待slave同步,那么在進行第5步innodbcommit后,即其他事務能看到該事務的更新時,slave已經(jīng)成功接收到binlog,即使發(fā)生切換,slave擁有與master同樣的數(shù)據(jù),不會發(fā)生“幻讀”現(xiàn)象。但是對于上面描述的第一種情況,結果是一樣的。

     所以,在極端情況下,半同步復制的master-slave會有一個事務不一致,但是對于用戶而言,由于這個事務并沒有成功返回給用戶,所以無論事務提交與否都是可以接受的,用戶有必要進行查詢或重試,判讀是否更新成功?;蛘呶覀兿胂?,對于單機而言,若事務執(zhí)行成功后,返回給用戶時,網(wǎng)絡斷了,用戶也是面臨一樣的問題,所以,這不是半同步復制的問題,對于提交返回成功的事務,半同步復制保證master-slave一定是一致的,從這個角度來看,半同步復制不會丟數(shù)據(jù),可以保證master-slave的強制性。

并行復制
半同步復制解決了Master-slave 強一致問題,那么性能問題呢?參與復制的兩個線程:IO線程和SQL線程,分別用于拉取和回放binlog。對于slave而言,所有拉取和解析binlog的動作都是串行的,相對與master并發(fā)處理用戶請求,在高負載下,若master產(chǎn)生binlog的速度超過slave消費binlog的速度,導致slave出現(xiàn)延遲,可以看到,users和master之間的管道遠遠大于master和salve之間的管道。

 那么如何并行化,并行io線程,還是并行sql線程?其實兩方面都可以并行,但是并行sql線程的收益更大,因為sql線程做的事情更多(解析,執(zhí)行)。并行IO線程,可以將從master拉取和寫入relay  log分為兩個線程;并行sql線程則可以根據(jù)需要做到庫級并行,表級并行,事務級并行。庫級并行在MySQL官方版本5.6已經(jīng)實現(xiàn)了。并行復制框架實際包含了一個協(xié)調(diào)線程和若干個工作線程。協(xié)調(diào)線程負責分發(fā)和解決沖突,工作線程只負責執(zhí)行。

 DB1,DB2和DB3的事務 就可以并發(fā)執(zhí)行,提高了復制的性能。有時候庫級并發(fā)可能不夠,需要做表級并發(fā),或更細粒的事務級并發(fā)。

 **并行復制如何處理沖突?**
  并發(fā)的世界是美好的,但不能亂并發(fā),否則數(shù)據(jù)就亂了。master上面通過鎖機制來保證并發(fā)的事務有序進行,那么并行復制呢?slave必需保證回放的順序與master上事務執(zhí)行順序一致,因此只要做到順序讀取binlog,將不沖突的事務并發(fā)執(zhí)行即可。對于庫級并發(fā)而言,協(xié)調(diào)線程要保證執(zhí)行同一個庫的事務放在一個工作線程串行執(zhí)行;對于表級并發(fā)而言,協(xié)調(diào)線程要保證同一個表的事務串行執(zhí)行;對于事務級而言,則是保證操作同一行的事務串行執(zhí)行。

   **是否粒度越細,性能越好?**

   這個并不是一定的。相對與串行復制而言,并行復制多了一個協(xié)調(diào)線程。協(xié)調(diào)線程一個重要作用是解決沖突,粒度越細的并發(fā),可能會有更多的沖突,最終可能也是串行執(zhí)行的,但消耗了 大量的沖突檢測代價。

看完mysql中三種復制機制異步復制,半同步復制和并行復制這篇文章后,很多讀者朋友肯定會想要了解更多的相關內(nèi)容,如需獲取更多的行業(yè)信息,可以關注我們的行業(yè)資訊欄目。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

當前標題:mysql中三種復制機制異步復制,半同步復制和并行復制詳細介紹-創(chuàng)新互聯(lián)
標題來源:http://www.bm7419.com/article40/cesjeo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供Google搜索引擎優(yōu)化、用戶體驗、ChatGPT網(wǎng)頁設計公司品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化