mysql主從複製的實現詳見
http://www.javashuo.com/article/p-wuzyvrnq-hn.html
###1.mysql複製原理
將mysql某一臺主機上的數據複製到其餘從機上,並從新執行一遍日誌文件中的內容來實現複製。
1.主服務器將更新寫入二進制日誌文件,並維護文件的一個索引來監控循環日誌,這些日誌記錄能夠發送到從服務器進行更新。
2.當一個從服務器鏈接主服務器時,它通知主服務器從日誌文件中讀取最後一次成功更新的位置;從服務器接收從那時起產生的任何更新,而後封鎖並等待主服務器通知新的更新。 ###2.mysql支持的複製類型 1基於語句的複製。即在主服務器上執行的sql語句,在從服務器上執行一樣的語句。
2基於行的複製。把改變的內容複製過去。 3混合類型的複製。默認採用基於語句的複製,一旦發現基於語句的複製沒法精確複製時,則採起行復制。 ###3.複製的具體工做
1 mster將改變的數據記錄到二進制日誌中,這些記錄叫作二進制數據
2 slave將master的二進制記錄拷貝到它的中繼日誌中
3 slave重作中繼日誌中的事件,這樣能夠保持了主從同步
###4.工做流程
####master作的事情
1 有數據變化時,master記錄二進制文件。
2 在事件寫入二進制日誌完成後,master通知存儲引擎提交事務
####slave作的事情
1.它須要將master中的二進制記錄拷貝到本身的中繼日誌。
2.slave開啓一個工做線程--I/O線程。該線程在master上打開一個普通的鏈接,而後開始binlog dump process,該process從master的二進制日誌中讀取事件,若是鏈接上master,它會睡眠並等待mater產生新的事物。即I/O線程將master中的事務寫入到中繼日誌中。
3.slave線程將從 中繼日誌中讀取事件,並重現事件(執行相關的sql)進而來更新slave的數據,這樣就實現了主從同步。
###5.總結
簡單概述主從複製過程
1.mster將數據改變 記錄到二進制日誌中,便是配置文件log-bin指定的文件(這些記錄叫作二進制日誌事件,binary log events)
2.slave將master的 二進制日誌文件 拷貝到 它的中繼日誌(relay log)
3.slave重作中繼日誌中的事件,將改變它本身的數據(數據重演)mysql