Mysql的複製原理以及流程

kakaxi9521發表於2017-03-23

Mysql的複製原理以及流程

1)複製的基本原理流程,3個執行緒以及之間的關聯。

Mysql內建的複製功能是構建大型,高效能應用程式的基礎。將Mysql的資料分佈到多個系統上去,這種分佈的機制,是透過將Mysql的某一臺主機的資料複製到其他主機(slave)上,並重新執行一遍來實現的。複製過程中一個伺服器充當主伺服器,而一個或多個其它伺服器充當從伺服器。主伺服器將更新寫入二進位制日誌檔案,並維護檔案的一個索引以跟蹤日誌迴圈。這些日誌可以記錄傳送到從伺服器的更新。當一個從伺服器連線到主伺服器時,它通知主伺服器從伺服器在日誌中讀取的最後一次成功更新的位置。從伺服器接收從那時起發生的任何更新,然後封鎖並等待主伺服器通知新的更新。

3個執行緒:

首先,slave開始一個工作執行緒-----I/O執行緒。I/O執行緒在master上開啟一個普通的連線,然後開始binlog dump processbinlog dump process master的二進位制日誌中讀取事件,如果已經跟上了master,它會睡眠並等待master產生新的事件。I/O執行緒將這些事件寫入中繼日誌。

SQL slave threadSQL從執行緒)處理該過程的最後一步。SQL執行緒從中繼日誌讀取事件而更新slave的資料,使其與master中的資料一致。只要該執行緒與I/O執行緒保持一致,中繼日誌通常會位於OS的快取中,所以中繼日誌的開銷很小。

     此外,在master中也有一個工作執行緒:和其他Mysql的連線一樣,slavemaster中開啟一個連線也會使得master開始一個執行緒。複製過程有一個很重要的限制-----複製在slave上是序列化的,也就是說master上的並行更新操作不能在slave上並行操作。 

https://dev.mysql.com/doc/refman/5.6/en/replication-implementation-details.html

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

相關文章