mysql主從複製原理

參考文章:http://blog.itechol.com/space-33-do-blog-id-5064.html

mysql主從複製工作原理:
(1)    master將改變記錄到二進制日誌(binary log)中(這些記錄叫做二進制日誌事件,binary log events);
(2)    slave請求master的binary log events並寫到中繼日誌(relay log)中;
(3)    slave重做中繼日誌中新的事件

複製過程主要涉及到三個線程,兩個線程(sql和IO線程)在slave服務器,另一個線程(IO)在master服務器

(1)在每個事務更新數據完成之前,master在二進制日誌中記錄這些改變,在事件寫入二進制日誌完成後,master通知存儲引擎提交事務。

(2)slave的IO線程連接上master,並請求指定二進制日誌文件的指定位置後的日誌內容。初始時通過下面的命令來設置slave端請求的master端的日誌和位置

mysql>change master to master_host='192.168.1.106', master_user='replication', master_password='000000', master_log_file='binlog.000006', master_log_pos=107;

(3)master接收到來自slave IO線程的請求後,通過負責複製的IO線程(master)讀取請求的二進制日誌文件指定位置後的日誌信息,並返回給slave端的IO線程。返回的信息中除了日誌內容還包含本次返回的信息在master端的binary log文件的名稱和讀取的位置

(4)slave的IO線程接到信息後,將接收的日誌內容寫入slave端的relay log(mysql-relay-bin.xxxxx)文件的末端,並將讀取到的master的binary log的文件名和位置記錄到master-info文件中,以便在下次向maser請求時,能夠清楚的告訴maser “我需要哪個binary log的哪個位置後的日誌內容,併發給我”

(5)slave的SQL線程檢測到relay log中有新的內容後,馬上解析該日誌中的內容爲,可執行的query語句,並在slave端執行這些query。從而使得slave端和master端的數據保持一致性


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章