MySQL主從複製 半同步複製原理

2021-09-22 23:08:55 字數 906 閱讀 1399

在mysql5.5之前的版本中,mysql的複製是非同步複製,主庫和從庫的資料之間存在一定的延遲,比如網路故障等各種原因,這樣子容易存在隱患就是:當在主庫寫入乙個事務成功後並提交了,但是由於從庫延遲沒有及時得到主庫推送的binlog日誌時,或者主庫突然宕機了,那麼此時從庫就可能損失這個事務,從而造成主從不一致的狀況。

因此我們mysql5.5版本之後引入了半同步複製的概念

半同步複製的原理:

半同步複製時,為了保證主庫上的每乙個binlog事務都能夠被可靠的複製到從庫上,主庫在每次事務成功提交時,並不及時反饋給前端應用使用者,而是等待其中的乙個從庫也接收到binlog事務並成功寫入中繼日誌後,主庫才返回commit操作成功給客戶端。半同步複製保證了事務成功提交後,至少有兩份日誌記錄,乙份在主庫的binlog日誌上,另乙份在至少乙個從庫的中繼日誌relay log上,從而更近一步保證了資料的完整性。

這個示意圖是半同步複製的步驟:

在這個半同步複製模式下:第1、2、3中任何乙個步驟中主庫宕機,則事務並沒有提交成功。從庫也沒有得到日誌,此時的主從複製資料是一致的。

那什麼時候半同步複製會突然變成非同步複製呢?

在第4步的時候,如果網路延遲故障或從庫宕機,那麼此時主庫的binlog都沒有及時傳送給從庫上,此時主庫上的事務會等待一段時間,時間長短由引數rpl_semi_master_timeout設定的毫秒數來決定,如果binlog在這段時間內都無法成功推送到從庫上,則mysql自動調整複製模式為非同步模式,此時事務正常返回提交結果給客戶端。

半同步複製很大程度上取決於主從庫之間的網路情況,往返時延rtt越小決定了從庫的實時性越好。

mysql主從複製

罪過啊,博主最近好久沒有更新部落格了,轉有道雲筆記了,筆記裡還有些乾貨,最近慢慢分享出來吧。博主最近發現有好多想學,但是發現精力有限啊,博主本來是搞個開發的,但是偏偏想把運維,dba的技術全都學了 mysql集群,nginx等等等 但是發現精力有限,所以簡單了解一下,mysql的主從複製,後面還有m...

MySQL 主從複製

1.概念 將主伺服器的資料複製到另外一台或多台伺服器的過程。也即將主資料庫的ddl和dml操作通過二進位制日誌傳到復 務器上,然後在從伺服器上對這些日誌進行重新執行,從而 保持資料同步。2.作用 降低主伺服器的訪問壓力 避免主伺服器因故障導致資料丟失。3.操作步驟 1 主伺服器將資料的改變記錄到二進...

MySQL 主從複製

資料分布。負載均衡 備份高可用性和故障切換 mysql公升級測試 mysql實現複製可以看做是三個步驟 在主庫上把資料更改記錄到二進位制日誌 binary log 中 這些記錄被稱為二進位制日誌事件 在每次準備提交事務完成資料更新前,主庫將資料更新的事件記錄到二進位制日誌中,在記錄二進位制日誌後,主...