MySQL資料庫複製操作的詳細實現步驟介紹

chenfeng發表於2016-07-03
MySQL資料庫複製操作大致可以分為三個步驟:
步驟1:主伺服器將資料的改變記錄到二進位制日誌中。
步驟2:從伺服器將主伺服器的binary log events複製到它的中繼日誌(relay log)中。
步驟3:從伺服器重做中繼日誌中的事件,將資料的改變與從伺服器保持同步。


詳細步驟如下:
 首先,主伺服器會記錄二進位制日誌,每個事務更新資料完成之前,主伺服器將這些操作的資訊記錄在二進位制日誌裡面,在事件寫入二進位制日誌完成後,主伺服器通知儲存引擎
提交事務。
 Slave上面的I/O程式連線上Master,併發出日誌請求,Master接收到來自Slave的IO程式的請求後,透過負責複製的IO程式根據請求資訊讀取制定日誌指定位置之後的日誌資訊,
返回給Slave的IO程式。返回資訊中除了日誌所包含的資訊之外,還包括本次返回的資訊已經到Master端的bin-log檔案的名稱已經bin-log的位置。
 Slave的I/O程式接收到資訊後,將接收到的日誌內容依次新增到Slave端的relay-log檔案的最末端,並將讀取到Master端的bin-log的檔案和位置記錄到master-info檔案中。
 Slave的SQL程式檢測到replay-log中新增了內容後,會馬上解析replay-log的內容成為在Master端真實執行時候的那些可執行的內容,並在自身執行。
 MySQL的複製環境90%以上都是一個Master帶一個或者多個Slave的架構模式,如果master和slave的壓力不是太大的話,非同步
複製的延時一般都很少。尤其是slave端的複製方式改成兩個程式處理以後,更是減小了slave端的延時。


備註:對於資料實時性要求不是特別嚴格的應用,只需要透過廉價的PC伺服器來擴充套件slave的數量,將讀壓力分散到多臺slave
的機器上面,即可解決資料庫端的讀壓力瓶頸。這在很大程度上解決了目前很多中小企業網站的資料庫壓力瓶頸問題,甚至有些
大型網站也在使用類似方案解決MySQL資料庫瓶頸。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2121399/,如需轉載,請註明出處,否則將追究法律責任。

相關文章