AOF持久化
AOF持久化
AOF(Append-only-file)持久化:保存写状态
- 记录除查询以外所有变更数据库状态的指令
- 以append的形式将命令追加保存在AOF文件中(增量)
配置方法
默认关闭,在配置文件中将appendonly no
改为appendonly yes
即可
配置写入方式:
always:一有变更就写入,everysec:每秒写入一次,no:交由操作系统决定,通常缓存区被填满了才写入。
日志重写解决AOF文件大小不断增大问题
冗余命令可以精简,redis可以在后台重建AOF文件
调用fork,创建一个子进程
子进程把新的AOF文件写入临时文件,不依赖原来的AOF文件
主进程持续将新的变动同时写入内存和原来的AOF里
主进程获取子进程重写AOF完成信号,往新的AOF同步增量变动
使用新的AOF文件替换掉原来的AOF文件
RDB和AOF的优缺点
RDB优点:
- 全量数据快照,文件小,恢复快
RDB缺点:
- 无法保存最近一次快照之后的数据
AOF优点:
- 可读性高,适合保存增量数据,数据不易丢失
AOF缺点:
- 文件体积大,恢复时间长
RDB-AOF混合持久化方式
AOF持久化和RDB持久化混合在一起使用。混合产生的文件有一半是AOF持久化文件,一半是RDB持久化文件。
混合持久化是AOF重写的优化。AOF重写是基于数据库的,会根据数据库状态产生的命令文件保存到AOF文件,之后追加新命令。
混合持久化则是在AOF重写时,直接用类似RDB的方式把数据库的状态(也就是现有的数据)保存起来,之后在尾部追加重写缓冲池的命令,这样生成的持久化文件既包括RDB文件格式数据,也包含AOF文件格式的命令,因此称为混合持久化。
- BGSAVE做镜像全量持久化,AOF做增量持久化
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Alfred的小站!