Redis中的AOF工作流程

AOF(append only file):以獨立日志的方式記錄每次寫的命令诲祸,重啟時再重新執(zhí)行AOF文件中的命令達到恢復數據的目的。

AOF的主要作用是解決了數據持久化的實時性斯辰,目前已經是Redis持久化的主流方式。

以下是AOF工作流程圖:

一坡疼、開啟AOF

Redis中默認不開啟AOF彬呻,appendonly yes,是開啟的配置柄瑰。

文件的名字默認為appendonly.aof闸氮,可以通過參數appendfilename來設置。

目錄也是通過dir來設置教沾。

二蒲跨、命令寫入append

所有寫入命令會追加到aof_buf(緩沖區(qū))中。

三授翻、文件同步sync

AOF緩沖區(qū)或悲,根據策略向硬盤做同步。由參數appendfsync控制藏姐,常規(guī)使用everysec選項:

  1. always:命令寫入aof_buf后隆箩,直接調用系統(tǒng)的fsync操作同步到AOF文件。
  2. everysec:命令寫入aof_buf后羔杨,調用系統(tǒng)的write操作,write操作完成后線程返回杨蛋。fsync同步文件操作由專門線程每秒調用一次兜材。
  3. no:命令寫入aof_buf后調用系統(tǒng)的write操作,不對AOF文件做fsync同步逞力,同步硬盤操作由操作系統(tǒng)負責曙寡,通常同步周期最長30秒。

四寇荧、文件重寫rewrite

隨著AOF文件越來越大举庶,需要定期對AOF文件進行重寫,達到壓縮的目的揩抡。把Redis進程內的數據轉化為寫命令同步到新AOF文件的過程户侥。AOF重寫過程分為手動觸發(fā)和自動觸發(fā):

  1. 手動觸發(fā):直接調用bgrewriteaof镀琉。
  2. 自動觸發(fā):根據auto-aof-rewrite-min-size(默認64M)和auto-aof-rewrite-percentage參數確定自動觸發(fā)時機。
    • 自動觸發(fā)時機 = (aof_current_size > auto-aof-rewrite-min-size) && (aof_current_size / aof_base_size) > auto-aof-rewrite-percentage蕊唐。
    • 當前AOF文件大形菟ぁ:aof_current_size。
    • 上一次重寫后的AOF文件空間大刑胬妗:aof_base_size钓试。
    • 其中aof_current_size和aof_base_size可以在命令info persistence的結果中查看到。

AOF重寫流程如下:

  1. 執(zhí)行AOF重寫請求副瀑。
  2. 如果當前進程正在執(zhí)行AOF重寫弓熏,請求不執(zhí)行,直接返回糠睡。
  3. 如果當前進程正在執(zhí)行bgsave操作硝烂,重寫命令延遲到bgsave完成之后再執(zhí)行。
  4. 主進程執(zhí)行fork操作完成后铜幽,繼續(xù)響應其他命令滞谢。所有修改命令繼續(xù)寫入aof_buf緩沖區(qū)中并根據appendfsync策略同步到硬盤,保證原有AOF機制正確性除抛。
  5. fork操作運用寫時復制技術狮杨,子進程只能共享fork操作時的內存數據。子進程根據內存快照到忽,按照命令合并規(guī)則寫入到新的AOF文件橄教。每次寫入硬盤數據量由aof-rewrite-incremental-fsync控制,默認為32M喘漏。
  6. 父進程將重寫緩沖區(qū)內的數據寫入到新的AOF文件中护蝶。
  7. 使用新的AOF文件替換老文件,完成AOF重寫翩迈。

五持灰、重啟加載load

當Redis服務器重啟時,可以加載AOF文件進行數據恢復负饲。

如上圖堤魁,流程說明:

  1. AOF持久化開啟且存在AOF文件時,優(yōu)先加載AOF文件返十。
  2. AOF關閉或者AOF文件不存在時妥泉,加載RDB文件。
  3. 加載AOF/RDB文件成功后洞坑,Redis啟動成功盲链。
  4. AOF/RDB文件存在錯誤時,Redis啟動失敗并打印錯誤信息。

六刽沾、文件校驗

對于錯誤格式的AOF文件:先進行備份本慕,然后采用redis-check-aof --fix命令進行修復,修復后使用diff -u對比數據的差異悠轩,找出丟失的數據间狂。

AOF文件結尾不完整的情況下:可以使用aof-load-truncated配置來兼容這種情況。

轉載地址:https://blog.csdn.net/jiangxiulilinux/article/details/104908226

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末火架,一起剝皮案震驚了整個濱河市鉴象,隨后出現的幾起案子,更是在濱河造成了極大的恐慌何鸡,老刑警劉巖纺弊,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異骡男,居然都是意外死亡淆游,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門隔盛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來犹菱,“玉大人,你說我怎么就攤上這事吮炕±巴眩” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵龙亲,是天一觀的道長陕凹。 經常有香客問我,道長鳄炉,這世上最難降的妖魔是什么杜耙? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮拂盯,結果婚禮上佑女,老公的妹妹穿的比我還像新娘。我一直安慰自己磕仅,他們只是感情好珊豹,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著榕订,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蜕便。 梳的紋絲不亂的頭發(fā)上劫恒,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機與錄音,去河邊找鬼两嘴。 笑死丛楚,一個胖子當著我的面吹牛,可吹牛的內容都是我干的憔辫。 我是一名探鬼主播趣些,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼贰您!你這毒婦竟也來了坏平?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤锦亦,失蹤者是張志新(化名)和其女友劉穎舶替,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體杠园,經...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡顾瞪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了抛蚁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陈醒。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瞧甩,靈堂內的尸體忽然破棺而出钉跷,到底是詐尸還是另有隱情,我是刑警寧澤亲配,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布尘应,位于F島的核電站,受9級特大地震影響吼虎,放射性物質發(fā)生泄漏犬钢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一思灰、第九天 我趴在偏房一處隱蔽的房頂上張望玷犹。 院中可真熱鬧,春花似錦洒疚、人聲如沸歹颓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽巍扛。三九已至,卻和暖如春乏德,著一層夾襖步出監(jiān)牢的瞬間撤奸,已是汗流浹背吠昭。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留胧瓜,地道東北人矢棚。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像府喳,于是被迫代替她去往敵國和親蒲肋。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內容