这个问题是关于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 on
和appendfsync everysec
会导致性能下降吗?会不会打CPU?写入负载偏高。
2) 一旦我使用这些新设置重新启动 redis 服务器,我仍然会丢失最后 60 秒的数据,对吗?
3) 重启时间是否值得担心?我的 dump.rdb
文件很小; ~90MB。
我正在尝试了解更多有关 redis 持久性的信息,并实现我的期望。就个人而言,我可以接受在发生灾难时丢失 60 秒的数据,因此我是否应该使用 AOF 也是我在考虑的问题。请随意插话。谢谢!
最佳答案
Does this mean that practically, I'm getting backups every 60 seconds?
否。 Redis 在 60 秒后进行后台保存,如果至少有 10000 个键被更改。否则,它不会进行后台保存。
Will using appendonly on and appendfsync everysec cause a performance downgrade? Will it hit the CPU? The write load is on the high side.
这取决于很多事情,例如磁盘性能(SSD VS HDD)、写入/读取负载(QPS)、数据模型等。您需要在特定环境中使用自己的数据进行基准测试。
Once I restart the redis server with these new settings, I'll still lose the last 60 secs of my data, correct?
否。如果同时开启AOF和RDB,当Redis重启时,会使用AOF文件重建数据库。由于您将其配置为 appendfsync everysec
,因此您只会丢失最后 1 秒 的数据。
Are restart times something to worry about? My dump.rdb file is small; ~90MB.
如果开启AOF,当Redis重启时,它会重放AOF文件中的日志来重建数据库。通常 AOF 文件比 RDB 文件大,并且它可能比从 RDB 文件恢复慢。你应该为此担心吗?在您的特定环境中使用您自己的数据进行基准测试。
编辑
重要通知
假设你已经设置Redis使用RDB保存,并向Redis写入大量数据。过了一段时间,你想开启AOF保存。 切勿修改配置文件以打开 AOF 并重新启动 REDIS,否则您将失去一切。
因为,一旦你在redis.conf中设置了appendonly yes
,然后重启Redis,它就会从AOF文件中加载数据,不管这个文件是否存在。如果该文件不存在,它会创建一个空文件,并尝试从该空文件加载数据。所以你会失去一切。
其实开启AOF并不需要重启Redis。相反,您可以使用 config set
命令动态打开它:config set appendonly yes
。
关于redis - Redis中的AOF和RDB备份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39953542/