久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

aof日志文件的用處有哪些

185次閱讀
沒有評論

共計 1833 個字符,預計需要花費 5 分鐘才能閱讀完成。

今天就跟大家聊聊有關 aof 日志文件的用處有哪些,可能很多人都不太了解,為了讓大家更加了解,丸趣 TV 小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

在 Redis 配置文件中有一個叫 appendonly 的選項, 可以寫 yes 或 no. 這個選項就是負責是否開啟 AOF 日志的開關.AOF 日志, 你可以簡單理解為 MySQL binlog 一樣的東西, 作用就是記錄每次的寫操作, 在遇到斷電等問題時可以用它來恢復數據庫狀態. 但是他不是 bin 的, 而是 text 的. 一行一行, 寫得很規范. 如果你是一臺 redis, 那你也能人肉通過它恢復數據。下面丸趣 TV 丸趣 TV 小編來講解下 aof(append only file) 日志文件有哪些用處?
aof(append only file) 日志文件有哪些用處

Redis 有三種類型的落地文件:

數據文件 - 在配置中可設置其位置及文件名, 默認文件名 dump.rdb

日志文件 - 在配置中也可以配置. 當然, 在你是以 daemon 方式運行的時候, 這個值就不要設置為 stdout 了, 這么設置會自動被換成 /dev/null

AOF 文件 - 也就是我們這篇文章的主角, 他的作用是用于數據恢復. 他除了設置是否開啟外, 還可以設置開啟后以何種方式寫日志. 這個何種一共是三種,1 是每次寫操作都保證將 fsync() 來完成的,2 是每秒調用一次 fsync(),3 是從不調用, 讓操作系統自己來同步. 當然, 設置為不同, 效率會不同, 你的數據損失風險也不同.

運行流程

既然是 log 文件, 而且是要用于恢復的, 那么我們動動腳趾都能想到, 這玩意肯定會越來越大, 不管你的應用是大是小, 如果 AOF 文件只增不減的話, 那文件將會無限長大, 這個問題是所有 binlog 都會遇到的. 而通常遇到這種問題都會有一個 rotate 方案. 就是當日志達到一定大小或者每隔一段時間將日志寫到新的一個文件中, 舊日志文件可以用來備份或其它.

而 Redis 的 AOF 還和 rotate 略有不同, 他用了一種比較簡單的方法, 就是先給當前的所有數據做一個快照. 然后再在這個快照的基礎上寫接下來的日志.

照快照的好處是, 你之前可能用了 10w 次操作共改變了 100 條數據 (比如在一條數據上進行了多次操作). 那這時你 AOF 中的 10w 條寫操作記錄就變成了 100 條記錄. 相當于將前面的執行全部合并了. 原本很大 AOF 變小了.

執行這個操作的命令是:BGREWRITEAOF (background rewrite append only file)

這個快照長什么樣呢? 基本和一般的寫日志沒什么兩樣, 也是一條一條的寫記錄.. 比如現在 Redis 中總共存了 3 條 string 類型的數據 a = 1,b= 2,c= 3. 那這個快照的基本內容就是寫入 a = 1, 寫入 b = 2, 寫入 c = 3.

這時候要用 AOF 進行恢復的時候, 只要先執行了前面幾條, 就能夠恢復當前狀態, 然后再執行之后來的寫操作, 就能完全重現數據了.
aof(append only file) 日志文件有哪些用處
內部實現

我們大概知道了執行 BGREWRITEAOF 時都發生了什么, 下面來說一下 Redis 是如何實現的. 分下面幾步:

fork! Redis 通過 fork 產生子進程.

子進程對當前數據執行遍歷操作, 將當前所有數據都生成一條寫入日志, 將這些日志寫入一個臨時文件.(其實是子進程寫了一個臨時文件, 又再 rename 成了另一個臨時文件)

父子進程是并行執行的, 在子進程遍歷并寫臨時文件的時候, 父進程在照常接收請求, 處理請求, 寫 AOF, 不過這時他是把新來的 AOF 寫在一個緩沖區中.

當子進程完成遍歷操作, 寫完臨時文件后, 就會退出. 這時父進程的 wait3 函數會接收到子進程退出的消息, 他會把自己現在收集在緩沖區中的所有 AOF 追加在臨時文件中.

最后一步, 把臨時文件 rename 一下, 改名為 appendonly.aof, 這時原來的 aof 文件被覆蓋. 整個過程完成.

如果你的 AOF 文件稍微大點, 你可以在一個終端執行 BGREWRITEAOF, 然后立刻 ls 連著查看幾次 redis 的 data 目錄, 就可以看到, 先生成了一個臨時文件, 臨時文件比原來的 appendonly.aof 小一些, 然后臨時文件消失, 而原來的 appendonly.aof 變小了, 其實就是臨時文件 rename 成了 appendonly.aof.. 覆蓋了原來的大文件. 看起來像是臨時文件消失了。

看完上述內容,你們對 aof 日志文件的用處有哪些有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注丸趣 TV 行業資訊頻道,感謝大家的支持。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-15發表,共計1833字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 甘孜| 含山县| 攀枝花市| 潮州市| 十堰市| 富裕县| 桃江县| 尼玛县| 拜泉县| 惠东县| 阿荣旗| 仙游县| 子长县| 合江县| 二连浩特市| 库伦旗| 遵义县| 布尔津县| 建水县| 寻乌县| 丰镇市| 水城县| 化德县| 平遥县| 磴口县| 通化县| 宜昌市| 镇平县| 丘北县| 临安市| 清镇市| 盘山县| 石家庄市| 郓城县| 福建省| 德安县| 环江| 民勤县| 云阳县| 河曲县| 宁城县|