Redis 提供了两种主要的持久化机制:RDB(Redis 数据库快照)和 AOF(附加文件)。
这两种机制各有特点和用途。
下面是如何使用 RDB 和 AOF 恢复 Redis 数据的步骤。
1、RDB(Redis 数据库快照)
RDB 是 Redis 的一种持久化机制,通过周期性地将数据库的状态快照保存在磁盘上的 RDB 文件中进行备份。RDB 文件通常是以 .rdb 结尾的文件。
恢复数据
找到 RDB 文件
确保你有一个有效的 RDB 文件。
如果你没有 RDB 文件,可以从 Redis 数据目录(通常是 /var/lib/redis 或其他配置目录)中找到 dump.rdb 文件。
step1:准备 Redis 服务器
停止当前运行的 Redis 实例(如果有):
sudo systemctl stop redis
或者:
redis-cli shutdown
step2:复制 RDB 文件
将 dump.rdb 文件复制到 Redis 数据目录:
cp /path/to/your/dump.rdb /var/lib/redis/dump.rdb
确保文件权限和所有者正确,以便 Redis 进程可以读取它。
step3:启动 Redis 服务器
启动 Redis 实例:
sudo systemctl start redis
或者:
redis-server /path/to/redis.conf
Redis 会自动加载 dump.rdb 文件中的数据,并恢复到数据库中。
2、AOF(附加文件)
AOF 是 Redis 的另一种持久化机制,它通过将每次写操作追加到 AOF 文件中来实现持久化。AOF 文件通常是以 .aof 结尾的文件。
恢复数据
找到 AOF 文件
确保你有一个有效的 AOF 文件。
如果你没有 AOF 文件,可以从 Redis 数据目录中找到 appendonly.aof 文件。
step1:准备 Redis 服务器
停止当前运行的 Redis 实例(如果有):
sudo systemctl stop redis
或者:
redis-cli shutdown
step2:复制 AOF 文件
将 appendonly.aof 文件复制到 Redis 数据目录:
cp /path/to/your/appendonly.aof /var/lib/redis/appendonly.aof
确保文件权限和所有者正确,以便 Redis 进程可以读取它。
step3:启动 Redis 服务器
启动 Redis 实例:
sudo systemctl start redis
或者:
redis-server /path/to/redis.conf
Redis 会自动加载 appendonly.aof 文件中的数据,并恢复到数据库中。
3. 混合使用 RDB 和 AOF
如果 Redis 配置同时启用了 RDB 和 AOF,Redis 会优先使用 AOF 文件来恢复数据,因为 AOF 文件包含了更详细的写操作日志,更能确保数据的完整性和一致性。如果 AOF 文件不可用,Redis 会回退到使用 RDB 文件进行恢复。
确保配置正确
检查 Redis 配置文件(redis.conf)中的持久化设置,确认你是否同时启用了 RDB 和 AOF:
RDB配置
save 900 1
save 300 10
save 60 10000
AOF 配置
appendonly yes
appendfsync everysec
参数说明:
save:用于配置 RDB 快照的生成规则。
appendonly yes:启用 AOF 持久化。
appendfsync everysec:配置 AOF 文件的同步策略。
总结
- RDB:通过将数据库快照保存为 dump.rdb 文件来进行恢复。停止 Redis,替换 RDB 文件,然后重新启动 Redis。
- AOF:通过将每次写操作追加到 appendonly.aof 文件来进行恢复。停止 Redis,替换 AOF 文件,然后重新启动 Redis。
无论是使用 RDB 还是 AOF,都需要确保 Redis 实例在恢复过程中处于停止状态,以避免数据不一致。