redis中的AOF和RDB备份

Has*_*aig 10 redis

这个问题是关于Redis的持久性.

我正在使用redis作为社交网站的"快速后端".这是一个单一的服务器设置.我一直在将PostgreSQL职责转移到Redis.目前etc/redis/redis.conf,appendonly设置设置为appendonly no.快照设置save 900 1,save 300 10,save 60 10000.所有这一切都适用于生产和开发.根据生产日志,save 60 10000可以大量调用.这是否意味着实际上,我每隔60秒就会获得一次备份?

一些文献建议将AOF和RDB备份一起使用.因此,我一直在努力转动appendonly on和使用appendfsync everysec.任何有过双方经验的人:

1)是否会使用appendonly onappendfsync everysec导致性能下降?它会击中CPU吗?写入负载偏高.

2)一旦我用这些新设置重启redis服务器,我仍然会丢失我的数据的最后60秒,对吗?

3)重启时间是否需要担心?我的dump.rdb档案很小; 〜90MB.

我正试图找到更多关于redis持久性的信息,并且正确地得到我的期望.就个人而言,在遇到灾难的情况下,我很好地丢失了60个数据,因此我是否应该使用AOF也是我在思考的问题.随意加入.谢谢!

for*_*ack 25

这是否意味着实际上,我每隔60秒就会获得一次备份?

.如果至少有10000个键被更改,Redis会在60秒后执行后台保存.否则,它不会进行后台保存.

是否会使用appendonly on和appendfsync everysec导致性能降级?它会击中CPU吗?写入负载偏高.

它取决于许多因素,例如磁盘性能(SSD VS HDD),写入/读取负载(QPS),数据模型等.您需要在特定环境中使用自己的数据进行基准测试.

一旦我使用这些新设置重新启动redis服务器,我仍然会丢失我的数据的最后60秒,对吗?

.如果同时打开AOF和RDB,Redis重新启动时,AOF文件将用于重建数据库.由于您将其配置为appendfsync everysec,您将只丢失最后1秒的数据.

重启时间是否需要担心?我的dump.rdb文件很小; 〜90MB.

如果打开AOF,Redis重新启动时,它会重播AOF文件中的日志以重建数据库.通常AOF文件比RDB文件大,并且可能比从RDB文件恢复要慢.你应该担心吗?在特定环境中使用您自己的数据做基准测试.

编辑

重要的提醒

假设您已将Redis设置为使用RDB保存,并将大量数据写入Redis.过了一会儿,你想打开AOF保存.永远不要修改配置文件以打开AOF并重新启动REDIS,否则你将失去一切.

因为,一旦你appendonly yes在redis.conf中设置,并重新启动Redis,它将从AOF文件加载数据,无论文件是否存在.如果该文件不存在,则会创建一个空文件,并尝试从该空文件加载数据.所以你会失去一切.

实际上,您无需重新启动Redis即可打开AOF.相反,您可以使用config set命令来动态启用它:config set appendonly yes.

  • @HassanBaig**NO !!!**你会失去一切.希望你还没有这样做......一旦你在redis.conf中设置`appendonly yes`,并重新启动Redis,它将从AOF文件加载数据,无论文件是否存在.如果该文件不存在,则会创建一个空文件,并尝试从该空文件加载数据.所以你会失去一切.实际上,您无需重新启动Redis即可打开AOF.相反,你可以使用`config set`命令动态打开它:`config set appendonly yes` (3认同)
  • @ifelsemonkey 如果启用了 `AOF`,Redis 将使用 append only 文件来初始化数据库。 (3认同)
  • 非常感谢您的评论。不幸的是,我的同事最近在生产数据库上进行了此配置更改并重新启动。我试图弄清楚发生了什么,这篇文章节省了我很多时间。幸运的是,我们有备份,看起来我们将能够恢复所有数据。 (2认同)