複製原理:
總體來說 複製有3個步驟:
1. 主數據庫服務器把更改的數據記錄到本地的二進制日誌文件中(二進制事件日誌 Binary log Events)
在主服務器上記錄二進制日誌文件,在每個更新數據的事務完成之前,主服務器都會把數據更改記錄到二進制文件中。
2. 從服務器把主服務器的二進制日誌文件拷貝到自己的中繼日誌(Replay)中
從服務器把主服務器的二進制日誌拷貝到自己的硬盤上,進入“中繼日誌”過程。首先啓動一個工作線程(IO從線程),這個IO線程開啓了一個普通的客戶端連接,這個連接會從主服務器的日誌文件中讀取事件,從服務器不會輪循去主服務器讀取事件日誌,而是等待有新事件發生時主服務器發出的信號,IO線程把事件寫入到自己服務器的中繼日誌中。
3. 從服務器重放中繼日誌中事件,把更改寫入自己的服務器
SQL從線程處理了最後的過程,SQL線程讀取自己的中繼日誌,並且重放其中的事件,然後更新從服務器的數據。由於這個線程能跟上IO線程,中繼日誌通常都是在操作系統中緩存,所以中繼日誌的開銷很低。SQL線程更新數據的事件也可以寫入自己的二進制文件中。
複製拓撲:
1.主-從複製
2. 主-主複製
3. 有從服務器的主-主複製
4. 環
5. 金字塔