3

RDB 和 AOF 对比

-RDBAOF
启动优先级
体积
恢复速度
数据安全性丢失若干时间内的数据根据策略决定

持久化方式选择

如果对数据安全性要求极高,应该同时使用两种持久化方式。

如果可以承受若干时间内的数据丢失,可以只使用 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 持久化时需要特别小心,以避免造成数据丢失。

正确的做法应该是:

  1. 停止 Redis,关闭 AOF 持久化,保留 RDB 持久化,防止启动时生成 appendonly.aof 文件;
  2. 拷贝 RDB 文件到数据目录,启动 Redis,启动后 Redis 会使用 RDB 文件恢复数据;
  3. 确认数据恢复,在命令行热修改配置开启 AOF 持久化 config set appendonly yes
  4. 等待 Redis 将内存中的数据写入 appendonly.aof 文件,此时 RDB 和 AOF 数据已同步;
  5. 停止 Redis,修改配置文件开启 AOF 持久化和 RDB 持久化;
  6. 启动 Redis,数据恢复和持久化配置完成。

小伍
139 声望4 粉丝