Redis - 备份
Redis - 持久化与备份策略
Section titled “Redis - 持久化与备份策略”虽然 Redis 是一个内存数据库,但它提供了将数据持久化到磁盘的强大机制。这对于数据的持久性、备份和重启至关重要。Redis 提供了两种主要的持久化模式:RDB 和 AOF。
RDB(Redis 数据库)快照
Section titled “RDB(Redis 数据库)快照”RDB 持久化在指定的时间间隔内执行数据集的时间点快照。它创建一个紧凑的二进制文件(默认为 dump.rdb),加载速度快,非常适合备份和快速重启。
您可以使用以下两个命令手动触发快照:
127.0.0.1:6379> BGSAVEBackground saving startedBGSAVE(后台保存)是推荐的命令。它会派生主 Redis 进程,允许父进程继续处理请求,而子进程将数据库写入磁盘。这是非阻塞的。
127.0.0.1:6379> SAVEOKSAVE 是一个同步的阻塞命令。它会冻结服务器,阻止其处理任何其他请求,直到快照完成。在生产系统中应避免使用此命令。
AOF(只追加文件)持久化
Section titled “AOF(只追加文件)持久化”AOF 持久化记录服务器接收到的每个写入操作。此日志存储在一个文件(例如 appendonly.aof)中,在启动时会被重新执行以重建原始数据集。由于它记录了每一次更改,AOF 提供了比 RDB 更好的持久性。
AOF 在您的 redis.conf 文件中启用。随着 AOF 文件增大,Redis 可以使用 BGREWRITEAOF 命令在后台自动将其重写为更紧凑的格式。
RDB 与 AOF:如何选择?
Section titled “RDB 与 AOF:如何选择?”| 因素 | RDB (快照) | AOF (只追加文件) |
|---|---|---|
| 持久性 | 较低。您可能会丢失两次快照之间最后几分钟的数据。 | 高得多。您可以配置它每秒同步一次,最多丢失 1 秒的数据。 |
| 文件大小 | 非常紧凑的二进制文件。 | 比 RDB 大,因为它是一个操作日志。可以重写以缩小。 |
| 性能 | 父进程性能高(使用派生子进程)。由于文件紧凑,重启速度快。 | 根据同步策略,可能对写入有轻微的性能影响。重启可能较慢,因为命令会被重新执行。 |
| 用例 | 适用于备份、灾难恢复和可接受数据丢失的快速重启。 | 适用于将数据丢失最小化作为关键考量的主要持久化。 |
最佳实践:两者结合使用
Section titled “最佳实践:两者结合使用”为了最大限度地保障数据安全,行业最佳实践是同时启用这两种持久化方法。AOF 确保了针对崩溃的持久性,而 RDB 则为灾难恢复或迁移提供了可靠的时间点备份。
数据恢复通常是自动的。只需将 dump.rdb 或 appendonly.aof 文件放置在 Redis 工作目录(在 redis.conf 中由 dir 配置指定)中并重启服务器即可。如果两个文件都存在,Redis 将优先使用 AOF 文件进行恢复,因为它能保证更好的数据持久性。