溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

redis主從復制同步數據死循環問題

發布時間:2020-06-23 16:04:06 來源:網絡 閱讀:2596 作者:524683249 欄目:數據庫

redis主從復制同步數據死循環問題

發現現象:

最近有問必答codis一個從庫端口6504一直時不時,主從延時和從庫連接不上的報警,開始懷疑是redis備份導致,沒有深入去找原因,后面發現白天也在報警,故深入排查了一下原因。

host: 10.20.1.4

port: 6504

idc: KDDI

role: redis_s

item: r_replication

current: 32767

last: 1 minutes.

info: 

send at [2015-11-27 09:17:49]

------------------------------------------

host: 10.20.1.4

port: 6504

idc: KDDI

role: redis_s

item: r_connection

current: 0

last: 1 minutes.

info: failed

send at [2015-11-27 08:13:46]

問題現象:

1、登錄到從庫所在服務器,奇怪的發現了,從庫周期性的在產生temp-rewriteaof-xxx.aof文件,見下圖

redis主從復制同步數據死循環問題

2、從庫的日志里面出現大量“Connection with master lost”日志,從句面意思來理解是說主庫連接丟失,見下圖

redis主從復制同步數據死循環問題

3、登錄到主庫,查看日志發現了"Connection with slave 10.20.1.4:6504 lost"“scheduled to be closed ASAP for overcoming of output buffer limits.”兩條重要信息

redis主從復制同步數據死循環問題

4、登錄到主庫使用info命令發現“slave0:ip=10.20.1.4,port=6504,state=send_bulk,offset=0,lag=0”

redis主從復制同步數據死循環問題

問題分析:

1、通過從庫周期性的生成aof文件以及日志里面看到周期性的連接主庫lost現象,初步懷疑是復制層面的問題,并查看其他幾個從庫的日志沒有發現這種情況,先排除網絡問題

2、在主庫也發現了連接從庫lost現象,確定是6504端口redis內部的問題,并且看到“overcoming of output buffer limits”,提示buffer限制了

3、以上信息基本上可以確認問題的原因,先回想一下redis主從復制原理:當在從庫執行slaveof ip port命令之后,主庫會使用bgsave生成一個rdb快照文件,生成文件之后通過網絡將這個文件傳到從庫,同時主庫上會將生成rdb快照那一刻起的新數據寫的一個buffer緩沖區,另一方面,從庫接受主庫剛剛生成那個rdb文件之后,開始加載這個rdb文件,加載需要一定時間,如果這個時間越長,其主庫的寫入量越大,那么剛剛主庫產生的buffer也會越大(當然不能無限大),在主庫client-output-buffer-limit參數 slave 268435456 67108864 60設置了其大小,意思說如果buffer大小超過256Mb或者連續60秒鐘產生的buffer大小大于64Mb,則buffer會強制關閉

解決辦法:

1、調整主庫client-output-buffer-limit默認參數,CONFIG SET client-output-buffer-limit "slave 1073741824 268435456 300",將其限制設置為1G,連續300秒超過256Mb才強制關閉,問題解決。

在主庫的日志里面看到現象如下:

redis主從復制同步數據死循環問題

在從庫的日志里面看到現象如下:

redis主從復制同步數據死循環問題

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女