MySQL復制原理
阿新 • • 發佈:2017-07-13
原理 href htm ron tail ati 功能 details https Slave I/O thread
參考官網:https://dev.mysql.com/doc/refman/5.7/en/replication-implementation-details.html
MySQL復制功能是通過三個線程實現的,包括主上的binlog dump tread和從上的sql thread、I/O ttread
Binlog dump thread
master創建binlog dump thread,用於 當slave連接到master時發送binlog events給其,dump thread每次讀取將要發送給slave的每個event時
先獲得lock在binary log,讀完之後再 釋放。
Slave I/O thread
當執行 START SLAVE
在slave端執行後,slave會創建I/O thread 連接到master主動讀取dump thread將最新的binlog events寫到本地的relay log中
Slave SQL thread
slave創建SQL thread從relay log中讀取event並應用
I/O thread讀取event的速度並不因為server執行的慢而變慢,即使slave的I/O thread 停止一會,當再次開啟的時候也能迅速的獲取master中所有
最新的binlog內容到relay log,即使SQL thread有很大的延遲。如果slave在SQL thread運用完所有的relay log之前停止了,I/O thread至少獲取到
了到目前為止在master上所發生的所有事務日誌到relay log,保證安全復制,到slave 下次啟動時接著應用。
如果maser 通過show processlist看不到binlog dump thread,則說明復制已經停了。
MySQL復制原理