Mysql 異步/同步/半同步復(fù)制

Mysql復(fù)制

異步

邏輯

MySQL 默認(rèn)的復(fù)制就是異步的,主庫再執(zhí)行完客戶端提交的事務(wù)后會立即將結(jié)果返回給客戶端,并不關(guān)系從庫是否已經(jīng)接收和處理。

技術(shù)實現(xiàn)

MySQL主庫將Binlog事件寫入到Binlog文件中,此時主庫只通知一下Dump線程發(fā)送這些新的Binlog,然后主庫繼續(xù)處理提交操作,不會保證這些Binlog傳到任何一個從庫節(jié)點上。

缺點

因為異步復(fù)制,主節(jié)點不關(guān)從節(jié)點是否收到Binlog,如果主crash掉了,此時主節(jié)點上已提交的事務(wù)可能并沒有傳到從庫上,如果此時,強(qiáng)行將從節(jié)點提升為主節(jié)點,可能導(dǎo)致新的主節(jié)點上數(shù)據(jù)不完整。

全同步

邏輯

全同步是指當(dāng)主庫接收到客戶端的一個事務(wù)請求,所有的從庫都執(zhí)行了該事務(wù)才返回給客戶端。

技術(shù)實現(xiàn)

當(dāng)主庫收到客戶端提交的事務(wù)后,所有的從庫必須收到并且執(zhí)行事務(wù),然后主庫才會執(zhí)行后續(xù)操作。

缺點

因為要等待所有從庫執(zhí)行完事務(wù),主庫才將結(jié)果返回給客戶端,所以全同步復(fù)制的性能必然受到嚴(yán)重影響,即完成一個事務(wù)的時間被拉長,性能降低。

半同步

邏輯

半同步復(fù)制是介于全同步復(fù)制和全異步復(fù)制之間的一種,主庫只需要等待至少一個從庫節(jié)點收到并Flush Binlog到Relay log文件即可,主庫不需要等待所有從庫給主庫反饋。(注意只要收到一個從庫的反饋即可)

技術(shù)實現(xiàn)

介于異步復(fù)制和全同步復(fù)制之間,主庫再執(zhí)行完客戶端提交的食物后不是立刻返回給客戶端,而是等待至少一個從庫接收到并寫到relay log中才返回給客戶端。

缺點

相對于異步復(fù)制,半同步復(fù)制提交了數(shù)據(jù)的安全性,同時它也造成了一定程序的延遲,這個延遲至少是一個TCP/IP往返時間,因此,半同步復(fù)制雖好在低延時的網(wǎng)絡(luò)中使用。

XMind - Trial Version

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容