Redis備份

Redis提供兩種備份方式:RDB 持久化機(jī)制和AOF 持久化機(jī)制

1、RDB持久化機(jī)制

會(huì)在指定時(shí)間點(diǎn)生成數(shù)據(jù)集快照,通過save(阻塞的)和bgsave(后臺(tái) fork 子進(jìn)程進(jìn)行不會(huì)阻塞主進(jìn)程處理命令請(qǐng)求)指令來生成RDB文件,如果需要恢復(fù)數(shù)據(jù),只需將備份文件 (dump.rdb) 移動(dòng)到 redis 安裝目錄并啟動(dòng)服務(wù)

優(yōu)點(diǎn)

  • 比起 AOF,在數(shù)據(jù)量比較大的情況下,RDB的啟動(dòng)速度更快;
  • RDB文件方便傳輸,可以在異地快速啟動(dòng)新服務(wù)
  • 性能好,可以起fork子進(jìn)程,不影響主線程

缺點(diǎn)

  • 數(shù)據(jù)丟失,假設(shè)5分鐘備份一次,在宕機(jī)的這5分鐘數(shù)據(jù)就丟失了
  • 當(dāng)數(shù)據(jù)量很大時(shí),在 fork 子進(jìn)程備份過程中,會(huì)出現(xiàn)明顯的停頓現(xiàn)象

AOF 持久化機(jī)制

記錄 server 端收到的每一條寫命令,當(dāng) server 重啟時(shí)會(huì)進(jìn)行重放以此來重建之前的數(shù)據(jù)集。AOF 文件中的命令全部以 Redis 協(xié)議的格式來保存,新命令會(huì)被追加(append)到文件的末尾。 Redis 還可以在后臺(tái)對(duì) AOF 文件進(jìn)行重寫(rewrite) ,使得 AOF 文件的體積不會(huì)超出保存數(shù)據(jù)集狀態(tài)所需的實(shí)際大小。AOF 持久化實(shí)現(xiàn)可以分為命令追加(append)、文件寫入(write)、文件同步(fsync) 三個(gè)步驟。Append 追加命令到 AOF 緩沖區(qū),Write 將緩沖區(qū)的內(nèi)容寫入到程序緩沖區(qū),F(xiàn)sync 將程序緩沖區(qū)的內(nèi)容寫入到文件。

優(yōu)點(diǎn)

  • 比RDB可靠。你可以制定不同的 fsync 策略:no、everysec 和 always。默認(rèn)是 everysec。這意味著你最多丟失一秒鐘的數(shù)據(jù)
  • 當(dāng)AOF文件太大時(shí),Redis 會(huì)自動(dòng)在后臺(tái)進(jìn)行重寫。重寫很安全,因?yàn)橹貙懯窃谝粋€(gè)新的文件上進(jìn)行,同時(shí) Redis 會(huì)繼續(xù)往舊的文件追加數(shù)據(jù)。新文件上會(huì)寫入能重建當(dāng)前數(shù)據(jù)集的最小操作命令的集合。當(dāng)新文件重寫完,Redis 會(huì)把新舊文件進(jìn)行切換,然后開始把數(shù)據(jù)寫到新文件上

缺點(diǎn)

  • AOF比較大,比RDB大

Redis 4.0 混合持久化

Redis 4.0 開始支持 RDB 和 AOF 的混合持久化(默認(rèn)關(guān)閉,可以通過配置項(xiàng) aof-use-rdb-preamble 開啟)。如果把混合持久化打開,AOF 重寫的時(shí)候就直接把 RDB 的內(nèi)容寫到 AOF 文件開頭。先以RDB格式寫入全量數(shù)據(jù),再追加增量日志,這樣既可以提高AOF Rewrite和恢復(fù)速度,也可以減少文件大小,還可以保證數(shù)據(jù)的完畢性。這樣做的好處是可以結(jié)合 RDB 和 AOF 的優(yōu)點(diǎn), 快速加載同時(shí)避免丟失過多的數(shù)據(jù)。當(dāng)然缺點(diǎn)也是有的, AOF 里面的 RDB 部分就是壓縮格式不再是 AOF 格式,可讀性較差。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 從這篇文章開始,將依次介紹Redis高可用相關(guān)的知識(shí)——持久化、復(fù)制(及讀寫分離)、哨兵、以及集群。 本文將先說明...
    不變甄心閱讀 736評(píng)論 0 4
  • 前言 在上一篇文章中,介紹了Redis內(nèi)存模型,從這篇文章開始,將依次介紹Redis高可用相關(guān)的知識(shí)——持久化、復(fù)...
    Java架構(gòu)閱讀 2,500評(píng)論 3 21
  • 企業(yè)級(jí)redis集群架構(gòu)的特點(diǎn) 海量數(shù)據(jù) 高并發(fā) 高可用 要達(dá)到高可用,持久化是不可減少的,持久化主要是做災(zāi)難恢復(fù)...
    lucode閱讀 2,277評(píng)論 0 7
  • 中午放學(xué)回家,寶貝說這周作業(yè)很多,我?guī)Щ匾恍┏酝觑埦妥?,這樣就可以早點(diǎn)做完了。之前每周周五都是我不停的催才會(huì)十分不...
    經(jīng)常不在線h閱讀 205評(píng)論 0 0

友情鏈接更多精彩內(nèi)容