mysql主從複製(一)

來源:互聯網
上載者:User

標籤:

mysql replication是mysql一個很重要的功能,主要用於主伺服器和從伺服器之間的資料複製操作。

mysql複製是指從一個mysql主伺服器(master)將資料複製到另一台或者多台mysql從伺服器(salves)的過程,

將主要資料庫的DDL和DML操作通過二進位日誌傳到從伺服器上,

然後在從伺服器上對這些日誌重新執行,從而使得主從伺服器的資料保持同步。

在mysql中,複製操作是非同步進行的,slaves伺服器不需要持續的保持串連接受master伺服器的資料。

mysql支援一台主伺服器同時向多台從伺服器進行複製操作,從伺服器同時可以作為其他從伺服器的主伺服器。

如果mysql主伺服器的訪問量比較大,可以通過複製資料,然後在從伺服器上進行查詢操作,從而降低主伺服器訪問壓力,

同時從伺服器作為主伺服器的備份,可以避免主伺服器因為故障資料丟失的問題。

複製操作大致可以分為3個步驟:

1、主伺服器將資料的改變記錄到二進位日誌(binary log)中;

2、從伺服器將主伺服器的binary log複製到它的中繼日誌(relay log)中;

3、從伺服器重做中繼日誌的事件,將資料的改變與主伺服器保持同步。

看起來原理還是很簡單的。

更詳細的過程如下:

首先,主伺服器會記錄二進位日誌,每個事務更新資料完成之前,主伺服器將這些操作的資訊記錄在二進位日誌裡面(為什麼是二進位的,不是文字文件),

在事件寫入二進位日誌完成後,主伺服器通知儲存引擎提交事務。

slave上的I/O進程連上master,並發出日誌請求,master收到來自slave的I/O進程的請求後,

通過負責複製的I/O進程根據請求資訊讀取制定日誌指定位置之後的日誌資訊,

返回給slave的I/O進程。返回資訊中除了日誌所包含的資訊之外,還包括本次返回的資訊已經到master端的bin-log檔案的名稱以及bin-log的位置。

slave的I/O進程接受到資訊後,將接受到的日誌內容一次添加到slave端的relay-log檔案的最末端,

並將讀取到的master端的bin-log檔案名稱和位置記錄到master-info檔案中(這個master-info檔案是在master上還是在slave上呢?)

slave的sql‘進程檢測到relay-log中新增加的內容之後,馬上解析relay-log的內容成為在master端真實執行時候的那些可執行內容,並在自身執行。

 

mysql複製環境,90%以上都是一個master帶一個或者多個slave的架構模式,如果master和slave的壓力不是太大的話,

非同步複製的延時一般很少,尤其是slave端的複製方式改成兩個進程(I/O和sql?)處理之後,更是減少了slave端的延時。

 

對資料即時性要求不高的應用,只要通過廉價的電腦伺服器來擴充slave的數量,將讀壓力分散到多台slave上,

即可解決資料端的讀壓力瓶頸。

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.