因爲背景緣由,所作的主從同步仍是要基於MySQL 5.1的版本,主從同步主要是一個數據庫讀寫訪問原來的數據庫熱度過大,須要作到使用從庫對讀分壓。mysql
MySQL主從同步介紹sql MySQL 支持單雙向、鏈式級聯、異步複製。在複製過程當中,一個服務器充當主服務器(Master),而一個或多個其它的服務器充當從服務器(Slave)。數據庫 若是設置了鏈式級聯複製,那麼,從(slave)服務器自己除了充當從服務器外,也會同時充當其下面從服務器的主服務器。鏈式級聯複製相似A->B ->C ->D 的複製形式。服務器 當配置好主從複製後,全部對數據庫內容的更新就必須在主服務器上進行,以免用戶對主服務器上數據內容的更新與對從服務器上數據庫內容的更新之間發生衝突。生產環境中通常會,忽略受權表同步,而後對從服務器上的而用戶受權select讀權限,或在my.cnf配置文件中加read-only 參數來確保從庫只讀,固然兩者同時操做效果更佳。異步
MySQL主從複製的原理spa MySQL 主從複製是一個異步複製過程(但看起來也是實時的),數據庫數據從一個MySQL數據庫(咱們稱爲Master)複製到另外一個MySQL數據庫(咱們稱之爲Slave)。在Master和Slave之間實現整個主從複製的過程有三個線程參與完成。其中兩個線程(SQL線程和IO線程)在Slave端,另外一個線程(IO線程)在Master端。線程 要實現MySQL的主從複製,首先必須打開Master端的Binlog(MySQL-bin.XXXXX)功能,不然沒法實現主從複製。由於整個複製過程實際上就是Slave從Master端獲取Binlog日誌,而後再在Slave自身上以相同順序執行binlog日誌中所記錄的各類操做。打開MySQL的binlog能夠經過MySQL的配置文件my.cnf中的mysqld模塊([mysqld]標識後的參數部分)添加「log-bin」參數項。日誌
MySQL主從複製過程描述ci 下面簡單描述下MySQL Replication的複製過程:同步 一、Slave服務器上執行start slave,開啓主從複製開關。 二、此時,Slave服務器的IO線程會經過在Master上受權的複製用戶請求鏈接Master服務器,並請求從指定Binlog日誌文件的指定位置(日誌文件和位置是在配置主從服務時change master 時指定的)以後的Binlog日誌內容。 三、Master服務器接收到來自Slave服務器的IO線程的請求後,Master服務器上負責複製IO線程根據Slave服務器的IO線程請求的信息讀取指定Binlog日誌文件指定位置以後的Binlog日誌信息,而後返回給Slave端的IO線程。返回的信息中除了日誌內容外,還有本次返回日誌內容在Master服務器端的新Binlog文件名稱以及在Binlog中的指定位置。 4.、當Slave服務器的IO線程獲取到來自Master服務器上IO線程發送日誌內容及日誌文件及位置點後,將Binlog日誌內容依次寫入到Slave端自身的Relay Log(即中繼日誌)文件(MySQL-relay-bin.xxxxx)的最末端,並將新的Binlog文件名和位置記錄到master-info文件中,以便下一次讀取Master端新binlog日誌時可以告訴Master服務器須要重新binlog日誌的那個文件那個位置開始請求新的Binlog日誌內容。 5.、Slave服務器的SQL線程會實時的檢測本地Relay Log中新增長了日誌內容,而後及時的把Log文件中的內容解析成在Master端曾經執行的SQL語句的內容,並在自身Slave服務器上按語句的順序執行應用這些SQL語句。 六、 通過了上面的過程,就能夠確保在Master端和Slave端執行了一樣的SQL語句。當複製狀態正常的狀況下,Master端和Slave端的數據是徹底同樣的。 主從複製的原理圖 |