主要涉及三個線程: binlog 線程、I/O 線程和 SQL 線程。
binlog 線程 : 負(fù)責(zé)將主服務(wù)器上的數(shù)據(jù)更改寫入二進(jìn)制日志中。
I/O 線程 : 負(fù)責(zé)從主服務(wù)器上讀取二進(jìn)制日志,并寫入從服務(wù)器的中繼日志中。
SQL 線程: 負(fù)責(zé)讀取中繼日志并重放其中的 SQL 語句。
全同步復(fù)制
主庫寫入binlog后強(qiáng)制同步日志到從庫,所有的從庫都執(zhí)行完成后才返回給客戶端,但是很顯然這個方式的話性能會受到嚴(yán)重影響。
半同步復(fù)制
和全同步不同的是,半同步復(fù)制的邏輯是這樣,從庫寫入日志成功后返回ACK確認(rèn)給主庫,主庫收到至少一個從庫的確認(rèn)就認(rèn)為寫操作完成。