復制不是copy的復制而是replication的復制,從今天開始我將專門分幾個章節和大家討論一下mysql的replication問題,其中有關於主從復制的問題將單獨詳細的和大家講解。首先先給大家講解一下mysql的復制原理,說的通俗一些就是mysql的復制過程是怎麼工作的,具體如下圖所示:
我們大概可以分成3部來講解
1首先主服務器把數據更改變化寫到二進制日志裡(binary log)。
2 從服務器把主服務器的二進制日志文件copy到自己的中繼日志裡面。
3從服務器重放中繼日志裡的事件,並且更新自己的相關數據。
下面我們來進行詳細的講解,當主服務器進行數據的更新包括insert ,create,drop等操作的時候,會把具體的事件寫入到自己的二進制日志裡,那怕具體的操作是錯誤操作也照樣把相關的事件寫入到自己的二進制日志裡,接著從服務器會主動去主服務器裡面copy其生成的二進制日志文件並且把其寫入到自己的中繼日志裡面。在這一過程中從服務器會建立一個I/O線程,說白了話就是這時候從服務器會建立一個客戶端連接主動去和主服務器連接,然後啟動一個進程,這個進程的作用是從主服務器的二進制日志裡讀取事件。當從服務器把主服務器的二進制日志文件拷貝到自己的中繼日志文件裡的時候,從服務器會啟動一個線程讀取中繼日志裡的內容,並且重放裡面的內容從而起到同步主數據庫的作用。這裡需要說明一點,mysql replication是異步同步的,這就意味著,從服務器上的數據並不是時時更新的,他們之間可能有延遲,有可能是幾秒,幾分,大型數據庫甚至可能是幾小時。Oh,my sky!!
本文出自 “虛心求教” 博客