Skip to content

Redis - 备份

虽然 Redis 是一个内存数据库,但它提供了将数据持久化到磁盘的强大机制。这对于数据的持久性、备份和重启至关重要。Redis 提供了两种主要的持久化模式:RDB 和 AOF。

RDB 持久化在指定的时间间隔内执行数据集的时间点快照。它创建一个紧凑的二进制文件(默认为 dump.rdb),加载速度快,非常适合备份和快速重启。

您可以使用以下两个命令手动触发快照:

127.0.0.1:6379> BGSAVE
Background saving started

BGSAVE(后台保存)是推荐的命令。它会派生主 Redis 进程,允许父进程继续处理请求,而子进程将数据库写入磁盘。这是非阻塞的。

127.0.0.1:6379> SAVE
OK

SAVE 是一个同步的阻塞命令。它会冻结服务器,阻止其处理任何其他请求,直到快照完成。在生产系统中应避免使用此命令。

AOF 持久化记录服务器接收到的每个写入操作。此日志存储在一个文件(例如 appendonly.aof)中,在启动时会被重新执行以重建原始数据集。由于它记录了每一次更改,AOF 提供了比 RDB 更好的持久性。

AOF 在您的 redis.conf 文件中启用。随着 AOF 文件增大,Redis 可以使用 BGREWRITEAOF 命令在后台自动将其重写为更紧凑的格式。

因素RDB (快照)AOF (只追加文件)
持久性较低。您可能会丢失两次快照之间最后几分钟的数据。高得多。您可以配置它每秒同步一次,最多丢失 1 秒的数据。
文件大小非常紧凑的二进制文件。比 RDB 大,因为它是一个操作日志。可以重写以缩小。
性能父进程性能高(使用派生子进程)。由于文件紧凑,重启速度快。根据同步策略,可能对写入有轻微的性能影响。重启可能较慢,因为命令会被重新执行。
用例适用于备份、灾难恢复和可接受数据丢失的快速重启。适用于将数据丢失最小化作为关键考量的主要持久化。

为了最大限度地保障数据安全,行业最佳实践是同时启用这两种持久化方法。AOF 确保了针对崩溃的持久性,而 RDB 则为灾难恢复或迁移提供了可靠的时间点备份。

数据恢复通常是自动的。只需将 dump.rdb 或 appendonly.aof 文件放置在 Redis 工作目录(在 redis.conf 中由 dir 配置指定)中并重启服务器即可。如果两个文件都存在,Redis 将优先使用 AOF 文件进行恢复,因为它能保证更好的数据持久性。