redis主從key數(shù)量不一致解惑2

實例基礎(chǔ)信息:

redis版本:redis-cli 3.2.5
架構(gòu):傳統(tǒng)主從架構(gòu)

背景

好多天沒有登陸某套redis主從進(jìn)行查看了离陶,某天redis磁盤容量報警见秤,上去排查磁盤容量報警問題時偶然發(fā)現(xiàn)一個大問題琅坡,redis主庫key數(shù)量與redis從庫key數(shù)量差別非常大(db0 差5685023個)为流,如圖:


WeChat_1522719374.jpeg

WeChat_1522719328.jpeg

問題定位

  • 1)可能是過期key未及時刪除導(dǎo)致主從key數(shù)量不一致畏邢,之前遇到過redis主從key數(shù)量不一致慈缔,以為是過期key造成的(請參考http://www.reibang.com/writer#/notebooks/19390605/notes/20403782)袱衷,于是對主庫捎废、從庫分別進(jìn)行了scan 0 count 1000000掃描清除過期但未被刪除的key,清除完畢后主從對比致燥,與截圖相比差距基本類似登疗,可以判斷這次主從key數(shù)量不一致不是由于過期key造成的。
  • 2)可能是主從復(fù)制通道異常導(dǎo)致主從key數(shù)量不一致嫌蚤,info查看master辐益、slave復(fù)制信息,發(fā)現(xiàn)復(fù)制通道是正常的脱吱,原因如下:
#主庫端
role:master
connected_slaves:1
slave0:ip=192.168.26.22,port=6379,state=online,offset=297300434582,lag=0
# 從庫端
role:slave
master_host:192.168.26.21
master_port:6379
master_link_status:up
  • 3)可能是主從復(fù)制延遲導(dǎo)致主從key數(shù)量不一致智政,通過查看主從復(fù)制偏移量,發(fā)現(xiàn)復(fù)制偏移量基本正常箱蝠,原因如下:
#主庫端
role:master
connected_slaves:1
slave0:ip=192.168.26.22,port=6379,state=online,offset=297614050284,lag=0
master_repl_offset:297614059914
repl_backlog_active:1
repl_backlog_size:104857600
repl_backlog_first_byte_offset:297509202315
repl_backlog_histlen:104857600

#偏移量計算(復(fù)制偏移量僅僅差9630 byte,而實際的key差距是50多萬续捂,肯定不是這復(fù)制偏移量造成的)
MariaDB [(none)]> select 297614059914 -297614050284;
+----------------------------+
| 297614059914 -297614050284 |
+----------------------------+
|                       9630 |
+----------------------------+  

#從庫端
# Replication
role:slave
master_host:192.168.26.21
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:297610328994
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:104857600
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0 
  • 4)這時沒有思路了,就仔細(xì)看看主從各自info信息抡锈,這時候發(fā)現(xiàn)一個大問題疾忍,主從內(nèi)存占用差距太大,信息如下:
#主庫Memory
used_memory:7783990712
used_memory_human:7.25G
used_memory_rss:8958046208
used_memory_rss_human:8.34G
used_memory_peak:7855643336
used_memory_peak_human:7.32G
total_system_memory:16827678720
total_system_memory_human:15.67G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:10737418240
maxmemory_human:10.00G
maxmemory_policy:noeviction
mem_fragmentation_ratio:1.15
mem_allocator:jemalloc-4.0.3

#從庫Memory
used_memory:1073784176
used_memory_human:1.00G
used_memory_rss:1381617664
used_memory_rss_human:1.29G
used_memory_peak:1090530808
used_memory_peak_human:1.02G
total_system_memory:16827678720
total_system_memory_human:15.67G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:1073741824
maxmemory_human:1.00G
maxmemory_policy:noeviction
mem_fragmentation_ratio:1.29
mem_allocator:jemalloc-4.0.3

查看主從配置文件信息如下:

#主庫
maxmemory 10gb
maxclients 40000
maxmemory-policy noeviction

#從庫
maxmemory 1gb
maxclients 40000
maxmemory-policy noeviction

#主從內(nèi)存不一樣原因:redis之前內(nèi)存硬件升級床三,沒有更改從庫的配置文件一罩,后期從庫重啟過

思考

通過排查定位到造成主從key數(shù)量不一致的原因就是從庫升級內(nèi)存當(dāng)時沒有更改配置文件,從庫數(shù)據(jù)超過了配置的內(nèi)存撇簿,但是自己服務(wù)器配置的內(nèi)存滿后的策略是noeviction聂渊,表示滿了以后不能繼續(xù)往里面寫入了差购,但是自己通過從庫info replication發(fā)現(xiàn)從庫的偏移量還是改變的,這說明從庫還是繼續(xù)寫入的汉嗽,為了證明這個想法欲逃,手動在主庫設(shè)置了key,發(fā)現(xiàn)從庫竟然同步過來了饼暑,這說明從庫這時是能正常復(fù)制主庫的更新的稳析。

redis maxmemory-policy策略介紹

A002817AC08654551D0CA4466C628B79.jpg

疑問

  • 為什么從庫設(shè)置了maxmemory-policy noeviction參數(shù)后,從庫內(nèi)存滿了仍能正常復(fù)制寫入數(shù)據(jù)弓叛,按照maxmemory-policy介紹彰居,此時從庫的redis是不能寫入數(shù)據(jù)了啊(這塊自己還沒有想明白)

總結(jié)(maxmemory-policy noeviction策略下)

  • redis 從庫內(nèi)存滿了主從復(fù)制不會斷開
  • redis 從庫內(nèi)存滿了撰筷,數(shù)據(jù)會繼續(xù)同步陈惰,偏移量會繼續(xù)增長
  • maxmemory-policy noeviction策略對于主庫生效,對于從庫即使數(shù)據(jù)大于配置的內(nèi)存毕籽,復(fù)制也能正常進(jìn)行抬闯,數(shù)據(jù)能夠正常同步(從庫的key會根據(jù)某種策略自動刪除)
  • redis主從監(jiān)控目前只能做到復(fù)制通道是否正常,但是不能監(jiān)控主從數(shù)據(jù)是否一致关筒,即使偏移量相同也不能證明主從數(shù)據(jù)一致(從庫的key有可能會自動刪除了)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溶握,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子平委,更是在濱河造成了極大的恐慌奈虾,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廉赔,死亡現(xiàn)場離奇詭異肉微,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蜡塌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門碉纳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人馏艾,你說我怎么就攤上這事劳曹。” “怎么了琅摩?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵铁孵,是天一觀的道長。 經(jīng)常有香客問我房资,道長蜕劝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮岖沛,結(jié)果婚禮上暑始,老公的妹妹穿的比我還像新娘。我一直安慰自己婴削,他們只是感情好廊镜,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著唉俗,像睡著了一般嗤朴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上互躬,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天播赁,我揣著相機(jī)與錄音,去河邊找鬼吼渡。 笑死,一個胖子當(dāng)著我的面吹牛乓序,可吹牛的內(nèi)容都是我干的寺酪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼替劈,長吁一口氣:“原來是場噩夢啊……” “哼寄雀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起陨献,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤盒犹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后眨业,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體急膀,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年龄捡,在試婚紗的時候發(fā)現(xiàn)自己被綠了卓嫂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡聘殖,死狀恐怖晨雳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情奸腺,我是刑警寧澤餐禁,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站突照,受9級特大地震影響帮非,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一喜鼓、第九天 我趴在偏房一處隱蔽的房頂上張望副砍。 院中可真熱鬧,春花似錦庄岖、人聲如沸豁翎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽心剥。三九已至,卻和暖如春背桐,著一層夾襖步出監(jiān)牢的瞬間优烧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工链峭, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留畦娄,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓弊仪,卻偏偏與公主長得像熙卡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子励饵,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容