redis中的AOF和RDB备份

时间:2016-10-10 07:49:52

标签: redis

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

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

有些文献建议将AOF和RDB备份结合使用。因此,我正在努力转动save 60 10000并使用appendonly on。对于任何有过双方经验的人来说:

1)使用appendfsync everysecappendonly on会导致性能下降吗?它会击中CPU吗?写入负载偏高。

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

3)重启时间是否需要担心?我的appendfsync everysec文件很小; 〜90MB。

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

1 个答案:

答案 0 :(得分:23)

  

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

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

  

使用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,否则您将失去一切

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

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