我在这里内部运行一个 Redis 数据库,想制作一个“快照的快照”。
什么鬼?是的。我想每天将 .rdb 文件移动到 S3 的存储桶中。此外,它应该是一个计划操作(可能使用 cronTab 函数)。
所以实际上我的问题来了:如果 cronTab 作业在 SAVE 操作(从 redis 到 .rdb)的中间开始运行,我会遇到麻烦吗?不存在丢失一些数据的问题,我只是希望它能无障碍地工作。
谢谢!
最佳答案
当 Redis 将 RDB 写入磁盘时,它会写入一个临时文件。保存过程完成写入后,它会将其重命名/移动到“dump.rdb”文件(或者如果您已经这样做,则将其更改为任何内容)。这是一个原子操作。因此,您应该可以接受您提出的方法。
如果您想对其进行更多控制,可以使用 https://github.com/therealbill/redis-buagent 等工具它作为从站连接并生成自己的 RDB,将其存储在内存中,然后存储到 S3(或您想要存储的其他任何地方,例如云文件或本地文件)或使用 redis-cli --rdb
生成一个“本地”RDB 文件供您复制到 S3。
关于redis - Redis 的 .rdb 文件的操作是 "blocking"吗?例如,我可以在 SAVE 操作的中间复制 .rdb 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33353356/