mysql非同步複製與半同步複製的架構原理

2021-08-14 00:18:21 字數 811 閱讀 2485

迷徒少年

在mysql5.5版本之前,複製都是非同步複製,(關於非同步複製的原理請大家自己參照下面的半同步複製,兩者只是略有不同)。該複製經常遇到的問題是:因為binlog日誌是推送的,所有主庫和從庫之間存在一定的延遲。 這樣就會造成很多問題,比如主庫因為磁碟損壞等故障突然崩掉,導致binlog日誌不存在,同時因為延遲binlog還沒有推送到從庫,從庫也就會丟失很多被主庫提交的事物,從而造成主從不一致。

解決如上的問題,mysql5.5版本之後引入了半同步複製機制。

非同步複製:主庫寫入乙個事務commit提交並執行完之後,,將日誌記錄到binlog,將結果反饋給客戶端,最後將日誌傳輸到從庫。

半同步問題:主庫寫入乙個事務commit提交並執行完之後,並不直接將請求反饋給前端應用使用者,而是等待從庫也接收到binlog日誌並成功寫入中繼日誌後,主庫才返回commit操作成功給客戶端。半同步複製保障了事物執行後,至少有兩份日誌記錄,乙份在主庫的binlog上 ,另乙份至少在從庫的中繼日誌relay log上,這樣就極大的保證了資料的一致性。

mysql非同步複製 半同步複製 組複製

sorce不管replica的死活,寫進binlog後,commit完成就算成功。如果最後乙個event沒有發給replica,主庫就掛了,那麼就會有丟失資料的風險。通過官方的半同步外掛程式,將binlog寫完後,傳送給replica,當replica寫入到relay log後,在主庫commit。...

MySQL的非同步複製 全同步複製與半同步複製

非同步複製 非同步複製,主庫將事務 binlog 事件寫入到 binlog 檔案中,此時主庫只會通知一下 dump 執行緒傳送這些新的 binlog,然後主庫就會繼續處理提交操作,而此時不會保證這些 binlog 傳到任何乙個從庫節點上。半同步複製 半同步複製,是介於全同步複製與全非同步複製之間的一...

對比MySQL的非同步複製 全同步複製與半同步複製

mysql的非同步複製 全同步複製與半同步複製非同步複製,主庫將事務 binlog 事件寫入到 binlog 檔案中,此時主庫只會通知一下 dump 執行緒傳送這些新的 binlog,然後主庫就會繼續處理提交操作,而此時不會保證這些 binlog 傳到任何乙個從庫節點上。半同步複製,是介於全同步複製...