Redis数据备份和恢复
1. Redis 数据备份概述
Redis 主要有两种常用的数据备份方法:
- RDB 持久化
- AOF 持久化
目前公司的Redis普遍使用 RDB ,因此也是记录一下RDB 备份与恢复。
2. Redis 数据备份原理
2.1 RDB 持久化
- RDB(Redis DataBase)持久化将 Redis 内存中的数据以快照形式保存到磁盘上。
- 适用于需要快速备份和恢复 Redis 数据库状态的场景,如数据迁移、备份和恢复。
- 优点:实现全量备份,数据恢复速度快。
- 缺点:可能会造成一定程度的数据丢失。
- 工作原理:通过 fork () 函数创建子进程,将数据库状态写入临时文件,然后替换原有 RDB 文件。
- 可以在 Redis 运行期间定期执行,也可以手动执行。
2.2 AOF 持久化
- AOF(Append-Only File)持久化将所有写操作以追加方式记录到文件中。
- 适用于对数据完整性要求较高的场景,如实时性要求高的缓存场景。
- 优点:可以实现增量备份,保证数据的完整性。
- 缺点:数据恢复较慢,可能占用较多磁盘空间,影响 Redis 性能。
- 工作原理:记录 Redis 执行的每个写操作到 AOF 文件中,通过重放这些操作来恢复数据库状态。
3. RDB 备份和恢复
以下以集群模式部署的 Redis 为例,介绍 RDB 备份和恢复步骤。
3.1 Redis Cluster 备份
- 生成备份文件:
- 使用 redis-cli 手动执行 BGSAVE:
redis-cli -h <host> -p <port> -a <password> bgsave
- 或在 redis.conf 中设置定期自动执行 BGSAVE:
save <seconds> <changes>
- 收集备份文件:
- 从每个 master 节点收集生成的 RDB 文件(dump.rdb)
- 将文件保存在安全位置
注意:执行备份时,确保集群处于低负载状态,以免影响性能。
3.2 Redis Cluster 恢复
- 停止每个节点的 Redis 服务:
systemctl stop redis
- 放置备份文件:
- 将 RDB 文件复制到每个节点的 Redis 数据目录
- 文件名应为
dump.rdb
-
修改 redis.conf 配置文件:
dbfilename dump.rdb dir /AppHome/redis
- 启动每个节点的 Redis 服务:
systemctl start redis
- 验证数据恢复:
- 使用 redis-cli 连接到 Redis Cluster
- 检查数据是否存在并正确恢复
通过以上步骤,您可以成功地备份和恢复 Redis 集群中的数据。记得根据数据量大小预留足够的时间进行这些操作。