Mysql擴充之replication概述

來源:互聯網
上載者:User

http://aronlulu.iteye.com/blog/790641

mysql在互連網領域用的如此廣泛很大一部分原因是是源於它的replication機制,簡單實用,幾台PC機子,很容易提高效能,乃中小網站必備良方。

首先什麼情況下要擴充資料庫,建個網站,建個資料庫,某一天網站火了,訪問量暴增,意味著從你伺服器上讀網頁的串連多了,IO瓶頸來了,自然想多
加幾台機子來分擔壓力,但是資料還要跟源主機上的資料庫內資料保持一致,這時候就是開始擴充資料庫的時候,replication就開始派上用場了。

replication的實現機制

第一步是master必須開啟Binary Log日誌,裡麵包含了資料庫的各種操作記錄,slave通過IO線程連上master主機,並請求日誌內容,這個請求應該還包括日誌的請求位置,即從什麼位置開始的日誌。

第二步master收到請求後就開始通過IO線程給slave返回內容,返回的內容除了日誌內容外還應該包括記錄檔的位置以及下次從什麼地方開始擷取新日誌。

第三步就是slave的IO線程將所得到的內容記錄到原生Relay Log檔案中,位置內容則記錄在master-info檔案中,以便下次能快速定位master的日誌內容。

第四步就是slave解析這些日誌內容然後執行,這樣master與slave資料就同步完成。

值得注意的是第三步與第四步是同時執行的(早期的mysql是分開執行的),是有兩個線程(IO線程與SQL線程)非同步執行的,這樣的好處無非是減少同步時間,拿空間換時間,減少了資料丟失的機率。

這是一台master機子與一台slave機子的通訊過程。

而實際運用中顯然不可能只有一台slave,主要有一下幾種叢集方式。

master-slaves

一台master對多台slaves,這個是最簡單的叢集方式,原理與上面的相同

master-master

兩台master,這種架構主要是為瞭解決熱備問題,可以防止master宕機導致需要重新部署slaves,這裡有個問題,就是兩台
master就意味著兩邊都要提供讀寫功能,實際操作中應該避免同一張表在master兩邊都提供寫的功能,這樣會導致髒資料,應該是一部分表在
master1端寫,一部分表在master2端寫。

master-slaves-slaves(級聯複製架構)

這中架構目的也很明確,普通的master-salves架構當slaves機子越來越多的時候,串連到master機子上的IO線程就多
了,master又要對外提供寫入服務,壓力太大,這種架構就是給master減壓,將IO轉移給slaves,然後slaves再給第二級slaves
提供IO服務,壞處自然也很明顯,延時嚴重。

master-master-slaves-slaves

這種最複雜,也最安全,最穩定,等於是將第二種與第三種組合起來。

以上幾種為常用的垂直擴充架構,主要解決的是大規模並發讀的問題,至於並發寫入,則要用到mysql的資料切分,明天再寫。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.