首页 文章

redis中的AOF和RDB备份

提问于
浏览
7

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

我'm using redis as a '快速后端' for a social networking website. It' s单个服务器设置 . 我一直在将PostgreSQL职责转移到Redis . 目前在 etc/redis/redis.conf 中,appendonly设置设置为 appendonly no . 快照设置为 save 900 1save 300 10save 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也是我在思考的问题 . 随意加入 . 谢谢!

1 回答

  • 23

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

    NO . Redis在60秒后进行背景保存, if there're at least 10000 keys have been changed . 否则,它不会进行后台保存 .

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

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

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

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

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

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

    EDIT

    IMPORTANT NOTICE

    假设您已将Redis设置为使用RDB保存,并将大量数据写入Redis . 过了一会儿,你想打开AOF保存 . NEVER MODIFY THE CONFIG FILE TO TURN ON AOF AND RESTART REDIS, OTHERWISE YOU'LL LOSE EVERYTHING .

    因为,一旦你在redis.conf中设置 appendonly yes 并重新启动Redis,它将从AOF文件加载数据,无论文件是否存在 . 如果文件没有丢失一切 .

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

相关问题