文件说:
每当 Redis 需要将数据集转储到磁盘时,就会发生以下情况:
Redis fork 。我们现在有一个子进程和一个父进程。
child 开始将数据集写入临时 RDB 文件。
当 child 写完新的 RDB 文件时,它会替换旧文件。
因为我想备份整个数据,所以我在 redis-cli 中输入 shutdown
命令希望它关闭并将所有数据保存到 dump.rdb
。完全关闭后,我转到数据库位置,看看 dimpr.rdb
是 423.9MB 和 temp-21331.rdb
是 180.5MB 发生了什么。Temp 文件仍然存在并且小于 dimpr.rdb
。显然,redis 不使用临时文件替换 dump.rdb
。
我想知道此时 dump.rdb
是否是整个 db 文件?删除临时文件是否安全。
最佳答案
temp-21331.rdb
的文件 mod 时间戳是什么意思?这听起来像是崩溃的遗留物。
您可以删除它。
文档绝对正确。重写时,所有信息都写入一个临时文件(压缩),完成后,dump.rdb
文件将被此临时文件替换。然而,在正常使用期间不应有残留物。 重要的是:您始终需要足够的可用磁盘空间来使此操作成功。一个安全的准则是:redis 内存限制的 140%(如果不应用压缩,则为 200%)。
希望这有帮助,TW
关于redis - 在redis中备份整个数据的一些困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23193214/