解決主從資料庫同步延遲問題

2022-09-15 03:48:14 字數 551 閱讀 1782

場景:需要在主機寫入之後,保證在備機一定能夠讀取到已經寫入的資料,也就是需要主從架構下的強一致性。

主機與備機之間的物理延遲是不可控的,也是無法避免的。但是如果僅僅需要滿足這種強一致性,是相對簡單的事情:只需要在主機寫入時,確認更新已經同步到備機之後,再返回寫操作成功即可。主從資料庫支援這種完全的同步模式。

不過一般不建議使用這種同步模式。顯而易見,如果寫操作必須等待更新同步完成,肯定會極大影響效能。

問題的關鍵在於,主從架構是一種用於資料容錯的高可用性解決方案,而不是一種處理高併發壓力的解決方案。它的目的是主機宕(dang)機以後資料不會丟失,而不是保證從備機讀取資料時的一致性。

解決方式是,不要試圖在資料庫層解決併發的讀操作問題,至少不要在主從架構的資料庫曾解決。要在資料庫層之上架構乙個redis這樣的分布式快取來解決,它是專門幹這個的。

分布式快取也存在一些限制,不能完全支援事務處理。取決於應用場景。對於一般的網際網路應用,併發壓力大但不要求支援事務,可以考慮分布式快取。對於銀行這樣嚴格要求強一致性的應用,對於寫入延遲一般沒什麼要求(延遲幾個小時都可以接受,資料不出錯就行),可以適用完全同步的模式。

如何解決主從資料庫同步延遲問題?

主機與備機之間的物理延遲是不可控的,也是無法避免的。但是如果僅僅需要滿足這種強一致性,是相對簡單的事 只需要在主機寫入時,確認更新已經同步到備機之後,再返回寫操作成功即可。主流資料庫均支援這種完全的同步模式。已經有人提到mysql的semi sync功能 從mysql5.6開始官方支援,此前的版本可...

100 解決Mysql主從同步延遲問題

強制讀主過於粗暴,畢竟只有少量寫請求,很短時間,可能讀取到髒資料。有沒有可能實現,只有這一段時間,可能讀到從庫髒資料的讀請求讀主,平時讀從呢?可以利用乙個快取記錄必須讀主的資料。如上圖,當寫請求發生時 1 寫主庫 2 將哪個庫,哪個表,哪個主鍵三個資訊拼裝乙個key設定到cache裡,這條記錄的超時...

mysql主從同步延遲問題

mysql配置讀寫分離後,master負責所有的寫操作,而從伺服器負責一切的讀操作。其實在資料庫中使用的最多的操作就是讀操作,一般而言,資料庫會有較大可能成為整個系統的瓶頸。導致資料庫主從同步延遲較大的問題一般有以下幾種。1 從伺服器配置較低,只需要公升級從伺服器的配置即可 2 主庫的qps過高導致...