Mysql

Mysql 5.6 Replication Lag 在 0 和 n 之間波動

  • January 28, 2022

我有一個主人和七個奴隸。在我的主伺服器的高負載期間,我看到複製滯後並且它一直在 0 和 n 之間波動(**其中 n 隨時間不斷增加,**我看到 n 增長超過 1 小時)。波動會在幾秒鐘內發生,即 sec:1 - Lag:0s, sec:2 - Lag:2000s, sec:3 - Lag:0s, sec:4 - Lag:2002s,

  1. 當 seconds_behind_master 為 0 時;顯示從屬狀態\G 說:“從屬已讀取所有中繼日誌;等待從屬 I/O 執行緒對其進行更新”。
  2. 當 seconds_behind_master 為 n 時;show slave status\G 說:“從中繼日誌讀取事件”或“系統鎖定”。在 Master 上,“show processlist”告訴複製執行緒始終處於“Sending binlog event to slave”狀態。

有了以上幾點,我發現我的 SQL 執行緒沒有滯後,而罪魁禍首是 IO 執行緒。我讀到網路緩慢會導致這個問題,但網路不是瓶頸,因為我已經驗證主從之間使用的頻寬只有 50%。當我打開 slave_compress_protocol 時,網路使用率下降了,但我仍然看到複製延遲以波動的方式增長。

我想知道除了網路之外可能導致此問題的其他原因。我經歷過:https ://www.percona.com/blog/2013/09/16/possible-reasons-when-mysql-replication-lag-is-flapping-between-0-and-xxxxx/並且不能t 將我的滯後歸因於文章中提到的任何一點。

此外,當 master 上的負載停止時,複製延遲停止波動並從 n 開始穩步下降並最終趕上。

謝謝。

編輯

會不會因為 master 負載過重(% CPU 使用率達到 100%),IO 執行緒間歇性地等待從 binlogs 中讀取)?

Seconds_behind_master在 0 和某個“大”值之間反彈?

我已經看到這種情況 16 年了。我從來沒有找到原因或治療方法。問題通常在一兩天后消失。

底線:忽略它。

我們曾經遇到過類似的問題。發現有一組數據管道周期性地從slave讀取數據。但是從站上的索引並沒有針對數據管道的讀取行為進行優化。更改從站上的索引對我們有用。

引用自:https://dba.stackexchange.com/questions/206148