作者:手机用户2602904731 | 来源:互联网 | 2023-07-12 16:02
我对aof重写的理解:no-appendfsync-on-rewrite=yes,会让redis在进行aof重写时,不阻塞主进程对客户端的请求。某时刻T1触发了重写,redis
我对aof重写的理解:
no-appendfsync-on-rewrite=yes,会让redis在进行aof重写时,不阻塞主进程对客户端的请求。
某时刻T1触发了重写,redis fork出一条子进程,将数据以写操作命令的形式写到新的tmp.aof文件,期间T2时刻,客户端发送了一条写操作请求SET1,此时主进程应该是
- 把SET1加入到原来的aof文件
- 把SET1写到重写缓存
时刻T3结束重写,然后主进程将重写缓存中的写操作SET1加到新的tmp.aof文件中,最后替换掉原aof文件。
假如T1-T3时间段内redis意外宕机,即使重写缓存里的SET1没有添加到tmp.aof文件中,重启的时候,也是通过原有aof文件(包括SET1操作)来恢复数据,不会导致意料之外的数据丢失。
我对aof重写的理解有问题吗?
为什么看网上的说法,为什么说no-appendfsync-on-rewrite=yes,会导致重写操作时间段内数据的意外丢失呢?还有把和rdb快照联系在一起的说法。。
有点晕,有没有大佬来说明一下?