標籤:master
Mysql主從複製原理:
1.Mysql支援單雙向、鏈式級聯、非同步複製。可以一主一從,也可以一主多從。
2.鏈式級聯中的從是下級從的主。類似A-->B-->C-->D。
3.主從複製配好後,資料庫的更新必須在主伺服器上進行,以免造成主從衝突。
4.主從伺服器架構可實現對使用者的請求實現讀寫分離。從處理使用者的select,主處理update,insert,delete等更新。以此保持主從即時同步。
5.可以把從伺服器根據業務來拆分。
6.mysql主從複製是非同步複製。master與slave之間三個線程參與完成,其中兩個線程(IO和SQL)在slave,另一個線程(IO)在master端。
7.首先必須開啟master的Binlog(Mysql-bin.xxxxxx)功能,因為整個複製過程實際上就是slave從master端擷取Binlog日誌,然後在slave自身上以相同的順序執行binlog日誌中所記錄的各種操作。
下面簡單描述下mysql主從複製過程(Binlog中不包含select內容):
1.slave伺服器上執行 start slave 開啟主從複製開關。
2.此時。slave伺服器的IO線程會通過在master上授權的複製使用者請求串連master伺服器,並請求從指定的Binlog記錄檔的指定位置之後的Binlog的日誌內容。
3.master伺服器接收到來自slave伺服器的IO線程的請求後,master伺服器上負責複製的IO線程根據slave伺服器的IO線程請求的資訊讀取指定Binlog記錄檔的指定位置之後的Binlog的日誌資訊,然後返回給slave端的IO線程。返回資訊除了日誌內容外,還有本次返回的日誌內容後在master伺服器端的新的Binlog檔案名稱以及在Binlog中的指定位置。
4.當slave的IO線程收到來自master的IO線程發送的日誌內容及記錄檔及位置點後,將Binlog日誌內容依次寫入到slave自身的relaylog(中繼日誌)檔案(mysql-relay-bin.xxxxxx)的最末端,並將新的Binlog檔案名稱和位置記錄到master-info檔案中,以便下一次讀取master的新Binlog日誌時能夠告訴master需要從新Binlog日誌的那個檔案哪個位置開始請求新的Binlog日誌內容。
5.slave伺服器的sql線程會即時的檢測本地relay log 中新增加了日誌內容,然後把這些內容解析成master曾經執行的sql語句,並在自身slave上按語句的順序執行sql語句。
6.這樣 就可以確保在master和slave執行了同樣的sql語句。
Mysql主從複製原理與實踐