Redis 持久化之AOF

1.是什么

以日志的形式来记录每个写操作(增量保存),将redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。

2.AOF持久化流程

image.png

(1)客户端发送请求(写命令)会被append追加到AOF缓冲区内;
(2)AOF缓冲区根据AOF持久化策略[always,everysec,no]将操作sync同步到磁盘的aof文件中;
(3)aof文件大小超过重写策略或手动重写时,进程rewrite重写,压缩aof文件容量;
(4)Redis服务重启时,会重新load加载aof文件中的写操作达到数据恢复的目的;

3.AOF默认不开启

可以在redis.config中配置文件名称,默认为appendonly.aof
AOF文件的保存路径,同RDB的路径一致

4.AOF和RDB同时开启,redis听谁的?

AOF和RDB同时开启,系统默认取AOF的数据(数据不会存在丢失)

5.AOF启动/恢复/修复

AOF的备份机制和性能虽然和RDB不同, 但是备份和恢复的操作同RDB一样,都是拷贝备份文件,需要恢复时再拷贝到Redis工作目录下

(1)正常恢复:

修改默认的appendonly no,改为yes
  将有数据的aof文件复制一份保存到对应目录(查看目录:config get dir)

image.png

恢复:重启redis然后重新加载

(2)异常恢复:
  • 修改默认的appendonly no,改为 yes
  • 如遇到AOF文件损坏,通过\color{red}{ /usr/local/bin/redis-check-aof --fix appendonly.aof}进行恢复
  • 备份被写坏的AOF文件
  • 恢复:重启redis,然后重新加载

6.AOF同步频率设置

appendfsync always:始终同步,每次Redis的写入都会立刻记入日志;性能较差但数据完整性比较好
appendfsync everysec:每秒同步,每秒记入日志一次,如果宕机,本秒的数据可能丢失。
appendfsync no:redis不主动进行同步,把同步时机交给操作系统。

————————————————
版权声明:本文为CSDN博主「但行益事莫问前程」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/javahelpyou/article/details/124056799

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容