redis 通过aof日志恢复_redis - aof持久化介绍

Redis的AOF持久化通过追加操作日志到文件实现,确保数据高持久性。AOF配置包括开启选项、文件位置和fsync策略。AOF重写用于减小文件体积,通过子进程完成。AOF具有易恢复、可理解性强的优点,但文件体积大,恢复相对较慢。fsync策略影响性能,但默认每秒fsync仍保持良好写性能。
摘要由CSDN通过智能技术生成

AOF简介

redis持久化存储的方式有rdb序列化存储和aof(append only file)。aof就是将操作和数据以格式化指令的方式追加到操作日志的尾部,在append操作返回后,才进行实际的数据变更。AOF文件保存了历史所有的操作过程;当redis server需要数据恢复的时候,可以直接从该文件中读取日志进行重做就可以还原。

AOF配置

打开aof配置,只要在配置文件里面写入对应的参数开关,并写上对应的aof文件的位置即可。

appendonly yes

appendfilename "/data/redis/appendonly.aof"

aof写磁盘有三种方式

appendfsync always

每次都是要刷入磁盘 这样的话就是会卡io

appendfsync everysec

每秒刷一次

appendfsync no

操作系统自己刷

aof重写

aof文件是以追加的方式家路日志,随着时间的推移,这个文件就会越来越大;并且一些key已经被删除了,日志里面还记录了一些操作里面,就不必要了,记录太多也会影响启动恢复速度。这时候就可以将aof文件进行序列化操作,然后再进行aof,这样子文件就会变小。

auto-aof-rewrite-percentage 100

涨的百分比 0就是不rewrite

auto-aof-rewrite-min-size 64mb

最小开始rewrite的大小

redis 重写是启用一个新的子进程,然后在子进程里面把rdb里面的数据序列化到新的aof文件中。在子进程写rdb的过程中,使用pipe通信来把主进程新的修改接收保存。在rbd写完之后追加到aof文件中。报告写入完成,停止接受新的修改最后结束。主进程把aof文件替换。也把子进程到主进程切换过程中的写入追加到aof。aof_fd切换成新的fd。整个流程完成。

aof优点

使用 AOF Redis 会更具有可持久性(durable):你可以有很多不同的 fsync 策略:没有 fsync,每秒 fsync,每次请求时 fsync。使用默认的每秒 fsync 策略,写性能也仍然很不错(fsync 是由后台线程完成的,主线程继续努力地执行写请求),即便你也就仅仅只损失一秒钟的写数据。AOF 日志是一个追加文件,所以不需要定位,在断电时也没有损坏问题。即使由于某种原因文件末尾是一个写到一半的命令(磁盘满或者其他原因),redis-check-aof 工具也可以很轻易的修复。AOF 文件里面包含一个接一个的操作,以易于理解和解析的格式存储。你也可以轻易地导出一个 AOF 文件。例如,即使你不小心错误地使用 FLUSHALL 命令清空一切,如果此时并没有执行重写,你仍然可以保存你的数据集,你只要停止服务器,删除最后一条命令,然后重启 Redis 就可以。

aof缺点

aof的文件会比rdb文件大,恢复起来相对比较慢。AOF 可能比 RDB 慢,这取决于准确的 fsync 策略。通常 fsync 设置为每秒一次的话性能仍然很高,如果关闭 fsync,即使在很高的负载下也和 RDB 一样的快。不过,即使在很大的写负载情况下,RDB 还是能提供能好的最大延迟保证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值