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