日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Redis哨兵主备切换的数据丢失及Redis数据持久化

發(fā)布時(shí)間:2024/10/6 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis哨兵主备切换的数据丢失及Redis数据持久化 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一 兩種數(shù)據(jù)丟失的情況

  • 異步復(fù)制導(dǎo)致數(shù)據(jù)丟失
    master->slave復(fù)制數(shù)據(jù)是異步的,可能有部分?jǐn)?shù)據(jù)還沒(méi)復(fù)制到slave,master就宕機(jī)了,此時(shí)導(dǎo)致數(shù)據(jù)丟失

  • 集群腦裂導(dǎo)致數(shù)據(jù)丟失
    master突然脫離正常網(wǎng)絡(luò),跟其他slave機(jī)器不能正常連接,但master還在運(yùn)行,此時(shí)哨兵認(rèn)為master宕機(jī)了開(kāi)始選舉,slave切換成master。此時(shí)集群中就會(huì)出現(xiàn)兩個(gè)master,這就是所謂的腦裂。此時(shí)某個(gè)slave被切換成master,client還沒(méi)切換到新的master還繼續(xù)向舊的master寫(xiě)數(shù)據(jù),造成這部分?jǐn)?shù)據(jù)丟失。因舊的master再次恢復(fù)時(shí)會(huì)作為一個(gè)slave掛在到新的master,自己的數(shù)據(jù)會(huì)被清空,從新的master復(fù)制一份數(shù)據(jù)

  • 解決異步復(fù)制和腦裂數(shù)據(jù)丟失情況

  • min-slaves-to-write 1
    min-slaves-max-lag 10
    至少有一個(gè)slave同步和復(fù)制數(shù)據(jù)延遲不超過(guò)10s,一旦所有的slave同步和復(fù)制數(shù)據(jù)延遲超過(guò)10s,master將不會(huì)接受任何請(qǐng)求

    • 減少異步復(fù)制數(shù)據(jù)丟失
      min-slaves-max-lag 這個(gè)配置,一旦ack和slave延遲過(guò)長(zhǎng),就認(rèn)為master當(dāng)即損失太多,那么就拒絕寫(xiě)入請(qǐng)求,這樣master位同步到slave丟失數(shù)據(jù)在一個(gè)可控的范圍內(nèi)
    • 腦裂導(dǎo)致數(shù)據(jù)丟失
      如果一個(gè)master出現(xiàn)了腦裂,如果不繼續(xù),指定數(shù)量的slave發(fā)送數(shù)據(jù),而且slave超過(guò)10s沒(méi)有給ack發(fā)送數(shù)據(jù),那么客戶端就拒絕給客戶端寫(xiě)請(qǐng)求

    二 Redis數(shù)據(jù)持久化RDB和AOF

    (1).RDB、AOF兩種持久化機(jī)制介紹

  • RDB 是 Redis 默認(rèn)的持久化方案。在指定的時(shí)間間隔內(nèi),執(zhí)行指定次數(shù)的寫(xiě)操作,則會(huì)將內(nèi)存中的數(shù)據(jù)寫(xiě)入到磁盤(pán)中。即在指定目錄下生成一個(gè)dump.rdb文件。Redis 重啟會(huì)通過(guò)加載dump.rdb文件恢復(fù)數(shù)據(jù)。
  • 1.1 RDB核心規(guī)則配置(重點(diǎn))
    save
    #save “”
    save 900 1
    save 300 10
    save 60 10000
    解說(shuō):save <指定時(shí)間間隔> <執(zhí)行指定次數(shù)更新操作>,滿足條件就將內(nèi)存中的數(shù)據(jù)同步到硬盤(pán)中。官方出廠配置默認(rèn)是 900秒內(nèi)有1個(gè)更改,300秒內(nèi)有10個(gè)更改以及60秒內(nèi)有10000個(gè)更改,則將內(nèi)存中的數(shù)據(jù)快照寫(xiě)入磁盤(pán)。
    若不想用RDB方案,可以把 save “” 的注釋打開(kāi),上面三個(gè)注釋。
    1.2 指定本地?cái)?shù)據(jù)庫(kù)文件名,一般采用默認(rèn)的 dump.rdb
    1.3 指定本地?cái)?shù)據(jù)庫(kù)存放目錄,一般也用默認(rèn)配置 dir ./
    1.4 默認(rèn)開(kāi)啟數(shù)據(jù)壓縮,rdbcompression yes
    解說(shuō):配置存儲(chǔ)至本地?cái)?shù)據(jù)庫(kù)時(shí)是否壓縮數(shù)據(jù),默認(rèn)為yes。Redis采用LZF壓縮方式,但占用了一點(diǎn)CPU的時(shí)間。若關(guān)閉該選項(xiàng),但會(huì)導(dǎo)致數(shù)據(jù)庫(kù)文件變的巨大。建議開(kāi)啟。

  • AOF是對(duì)每條寫(xiě)入的命令以append-only的模式寫(xiě)入日志文件中,在redis重啟時(shí)通過(guò)回放redis中的指令集來(lái)重新構(gòu)建數(shù)據(jù)集
  • 如果同時(shí)使用RDB和AOF持久化機(jī)制,會(huì)使用AOF重新構(gòu)建數(shù)據(jù),因?yàn)锳OF中的數(shù)據(jù)更加完整
  • (2).RDB持久化機(jī)制的優(yōu)點(diǎn)
    5. RDB會(huì)生成多個(gè)數(shù)據(jù)文件,每個(gè)數(shù)據(jù)代表了某個(gè)時(shí)刻redis中的數(shù)據(jù),這種多數(shù)據(jù)文件的方式非常適合做冷備,這種數(shù)據(jù)文件可以放到一些安全云存儲(chǔ)上類(lèi)如阿里云ODPS分布式存儲(chǔ)
    6. RDB對(duì)redis提供的對(duì)外讀寫(xiě)服務(wù)影響非常小,可以使redis保持高性能,redis主進(jìn)程只需要一個(gè)fork子進(jìn)程執(zhí)行IO操作使RDB持久化

    (3).相對(duì)于AOF來(lái)說(shuō),基于RDB重啟和恢復(fù)redis進(jìn)程更加快速

    總結(jié)

    以上是生活随笔為你收集整理的Redis哨兵主备切换的数据丢失及Redis数据持久化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。