从磁盘中删除由 Redis 命令 BGREWRITEAOF 引起的临时文件

从磁盘中删除由 Redis 命令 BGREWRITEAOF 引起的临时文件

上下文描述

我的 Linux 发行版包含 redis-server 6.0.5。 Redis 配置为使用持久性AOF(仅附加文件),并且RDB持久性被禁用。

启动时,脚本请求 redis-server 执行BGREWRITEAOF命令。此请求启动一个进程(带有 PID= ),该进程在写入文件的同一数据 Redis 路径中<pid>创建一个文件。temp-rewriteaof-<pid>.aofappendonly.aof

这是命令的正常工作BGREWRITEAOF。该命令的实用性已由其所写内容证明这个帖子

有什么问题

BGREWRITEAOF当系统在未完成的情况下关闭时就会出现问题。在这种情况下,该文件temp-rewriteaof-<pid>.aof在重新启动时仍然存在,并且占用磁盘空间。

因为系统随时都可能关闭,所以我冒着磁盘已满的风险。
在我看来,解决此问题的唯一方法是创建一个脚本,temp-rewriteaof-*.aof从数据 Redis 文件夹中删除所有文件。

问题

有人知道更好的解决方案吗? Redis 有一个干净的解决这个问题的程序/命令?

答案1

Redis-server 没有复杂的方法来管理其运行的服务器上的磁盘空间。它管理自己的 RDB 快照文件和 AOF 文件(如您所描述的)。然而,管理因计算机停止而中断的前一个进程创建的文件并不是 Redis 所做的事情。

我建议您在编写的启动时脚本中添加一个例程,用于将BGREWRITEAOF命令发送到 Redis 服务器。该例程将清除上次服务器停止留下的任何陈旧的临时 AOF 文件。这是执行此例程的好地方 - 脚本已经与 AOF 文件管理相关,并且启动时间是通过清理陈旧文件为计算机接下来的几个小时/几天的运行(并消耗磁盘空间)做准备的适当时间。

相关内容