mysql關於「異步複製」「同步複製」「半同步複製」「無損複製」的概念與區別

異步複製:主把事務寫到binlog日誌並無論從是否接收或者何時接收,commit以後,不會與從發生ack之類的交互。前端

同步複製:當主提交一個事務,在主向前端返回一個commit成功的指令前,必須保證全部的從已經提交了這個事務(全部從不但接收了,還必須apply了該事務日誌)app

半同步複製:(5.7.2版本以前默認且惟一的一個參數值after_commit):主上客戶端發出提交指令,事務提交到了存儲引擎後,等待從傳遞過來ack,再向前端返回成功的狀態。
與無損複製的區別就是:若是在主上這個事務已經提交到了存儲引擎,而正在等待從的ack過程當中---這個時候發生creash,則主上這個事務其實已經認爲commit了,而從還沒commit,
在切換到從後,就會回滾最後的這個事務,這個時候主從的時候其實就不一致了)異步

無損複製:(5.7.2版本以後一個參數值after_sync):主上客戶端發出提交指令,事務寫入到了binlog,傳遞到了從(事務寫入到了relay.log且flush to disk中持久化到了磁盤的relay.log中)
而後從給主反饋一個ack,master纔會把事務提交到存儲引擎且返回到client一個commit成功的指令。
spa

相關文章
相關標籤/搜索