RDB 和 AOF 对比
- | RDB | AOF |
---|---|---|
启动优先级 | 低 | 高 |
体积 | 小 | 大 |
恢复速度 | 快 | 慢 |
数据安全性 | 丢失若干时间内的数据 | 根据策略决定 |
持久化方式选择
如果对数据安全性要求极高,应该同时使用两种持久化方式。
如果可以承受若干时间内的数据丢失,可以只使用 RDB 持久化。
不建议只使用 AOF 持久化,因为定时生成 RDB 快照(snapshot)非常便于进行数据库备份,并且 RDB 恢复数据集的速度要比 AOF 恢复的速度要快。
RDB 和 AOF 的恢复优先级
如果 Redis 同时使用 RDB 和 AOF 持久化,Redis 会优先使用 AOF 进行恢复数据。
在启动 Redis 时,如果已经存在了 appendonly.aof 文件,则基于 appendonly.aof 文件恢复数据;如果不存在 appendonly.aof 文件,则创建一个空的 appendonly.aof 文件,并基于这个空的 appendonly.aof 文件启动。
由于以上的特性,在使用 RDB 恢复数据并切换为使用 RDB + AOF 持久化时需要特别小心,以避免造成数据丢失。
正确的做法应该是:
- 停止 Redis,关闭 AOF 持久化,保留 RDB 持久化,防止启动时生成 appendonly.aof 文件;
- 拷贝 RDB 文件到数据目录,启动 Redis,启动后 Redis 会使用 RDB 文件恢复数据;
- 确认数据恢复,在命令行热修改配置开启 AOF 持久化
config set appendonly yes
; - 等待 Redis 将内存中的数据写入 appendonly.aof 文件,此时 RDB 和 AOF 数据已同步;
- 停止 Redis,修改配置文件开启 AOF 持久化和 RDB 持久化;
- 启动 Redis,数据恢复和持久化配置完成。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。