【Redis】3-4 Redis的持久化机制 - AOF
目录
1. 内容概要
AOF特点
1. 以日志追加的形式来记录用户请求的写操作。
2. 只记录写操作。
3. redis的aof恢复其实就是把追加的文件从开始到结尾读取执行写操作。
1.1 总结
适合场景:实时性数据恢复
1.1.1 RDB
优点:
1.AOF更加耐用,可以以秒级别为单位备份,如果发生问题,也只会丢失最后一秒的数据,大大增加了可靠性和数据完整性。所以AOF可以每秒备份一次,使用fsync操作。
2. 以log日志形式追加,如果磁盘满了,会执行 redis-check-aof工具
3.当数据太大的时候,redis可以在后台自动重写aof。当redis继续把日志追加到老的文件中去时,重写也是非常安全的,不会影响客户端的读写操作。
4. AOF日志包含的所有写操作,会更加便于redis的解析恢复
缺点:
1. 相同的数据,AOF比RDB大
2. 针对不同的同步机制,AOF会比RDB慢,因为AOF每秒都会备份做写操作,这样相对与RDB来说就略低。每秒备份fsync没毛病,但是如果客户端的每次写入就做一次备份fsync的话,那么redis的性能就会下降。
3. 容易出现bug,就是数据恢复的时候数据不完整,这样显得AOF会比较脆弱,容易出现bug,因为AOF没有RDB那么简单,但是呢为了防止bug的产生,AOF就不会根据旧的指令去重构,而是根据当时缓存中存在的数据指令去做重构,这样就更加健壮和可靠了。
1.1.2 AOF的配置
配置 | 描述 |
appendonly no | AOF 默认关闭,yes开启 |
appendfilename "appendonly.aof" | AOF的文件名 |
appendfsync everysec | no:不同步 everysec:每秒备份,推荐使用 always:每次操作都会备份,安全并且数据完整,但是慢性能差 |
no-appendfsync-on-rewrite no | 重写的时候是否要同步,no可以保证数据安全 |
auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb | # 重写机制:避免文件越来越大,自动优化压缩指令,会fork一个新的进程去完成重写动作,新进程里的内存数据会被重写,此时旧的aof文件不会被读取使用,类似rdb #当前A0F文件的大小是上次A0F大小的100%并且文件体积达到64m,满足两者则触发重写(生产环境设置往往比较大如:5g) |
1.1.3 到底采用RDB还是AOF呢? 什么是冷热备份?
1. 接受缓存丢失,用RDB
2. 实时性的数据用AOF
3. 冷热备份,使用RDB和AOF结合一起做持久化
- RDB做冷备,可以在不同时期对不同版本做恢复,
- AOF做热备,保证数据仅仅只有1秒的损失。
- Redis恢复会先加载AOF,如果AOF有问题会再加载RDB,这样就达到冷热备份的目的了。