bgrewriteaof 的过程是这样吗?
来源:5-7 AOF(2)

qq_四道风_14222281
2020-10-27
aof_bgrewrite_buff 是把内存的数据像以 save rdb文件的方式一样吗(相当于一个快照写入到新创建的一个aof文件中)+在aof重写过程中redis客户端发送的新命令写到aof_buff中 = 新的aof文件(最后替换旧的aof文件)
写回答
1回答
-
梦飞_0002
2021-04-20
1)主进程fork出一个子进程生成新的AOF日志,fork时运用写时复制
技术,将主进程的内存页表copy给子进程,子进程通过内存页表读
取内存数据,并解析为一条条写命令追加到新生成的AOF日志中,
如此就完成了AOF日志重写的第一步;
(2)主进程执行完fork后会继续执行后面来的命令(读和写都有),并将
其中的写操作记录到aof_buf中,同时也写入aof_rewrite_buf中;
(3)aof_buf会由另一个后台线程fsync线程,按照指定的同步策略(no、
always、everysec中的一种)将buf数据写回磁盘;
(4)而aof_rewrite_buf是在子进程完成新的AOF写入后发送信号通知主
进程,再由主进程将这个buf中的所有写操作追加到新的AOF文件
中,这个新的AOF日志文件就是AOF重写日志;
(5)最后主进程会用新AOF替换旧的AOF,至此整个AOF重写圆满结束
10
相似问题