在 Debian 上恢复 Redis 数据的实用步骤
一、准备与定位
- 确认 Redis 配置中的持久化与路径:查看配置文件(常见为 /etc/redis/redis.conf)中的 dir(数据目录,常见为 /var/lib/redis)、dbfilename(默认 dump.rdb)、以及是否启用 appendonly yes(AOF 文件名通常为 appendonly.aof)。这些参数决定恢复时文件放置位置与加载方式。若需临时调整,可编辑配置或在启动/导入时显式指定。
- 做好现有环境防护:恢复前先备份当前实例可能残留的 dump.rdb/appendonly.aof,避免覆盖或混用导致的数据丢失。
- 校验备份文件可用性:对 RDB 使用 redis-check-rdb /path/to/dump.rdb 检查完整性;AOF 可通过启动加载验证(Redis 启动会自动重放 AOF)。
二、恢复方式一 使用 RDB 快照
- 方式 A(推荐,离线替换数据文件):
- 停止 Redis:sudo systemctl stop redis
- 备份现有数据:cp /var/lib/redis/dump.rdb ~/redis-backup/(如有)
- 拷贝备份 RDB 到数据目录并修正属主:cp /path/to/backup/dump.rdb /var/lib/redis/dump.rdb && chown redis:redis /var/lib/redis/dump.rdb
- 启动 Redis:sudo systemctl start redis
- 验证:redis-cli ping(返回 PONG 表示实例可达),再用业务键抽样核对。
- 方式 B(在线导入 RDB):在不停止实例的场景,可直接将 RDB 导入到目标实例:redis-cli --rdb /path/to/backup/dump.rdb。导入完成后用 redis-cli ping 与业务查询校验。
三、恢复方式二 使用 AOF 日志
- 方式 A(离线替换 AOF 并启动):
- 停止 Redis:sudo systemctl stop redis
- 备份现有 AOF:cp /var/lib/redis/appendonly.aof ~/redis-backup/(如有)
- 拷贝备份 AOF 到数据目录并修正属主:cp /path/to/backup/appendonly.aof /var/lib/redis/appendonly.aof && chown redis:redis /var/lib/redis/appendonly.aof
- 确保配置 appendonly yes 指向正确 AOF 文件,启动:sudo systemctl start redis;Redis 将自动重放 AOF 重建数据集。
- 方式 B(在线导入 AOF):redis-cli --aof /path/to/backup/appendonly.aof。导入完成后用 redis-cli ping 与业务查询校验。
四、恢复方式三 无停机导入与跨实例迁移
- 在线导入 RDB 到运行中的实例:redis-cli --rdb /path/to/backup/dump.rdb。适合跨机房/跨实例迁移或零停机需求。导入后通过 redis-cli ping 与抽样 GET/SCAN 校验。
- 在线导入 AOF 到运行中的实例:redis-cli --aof /path/to/backup/appendonly.aof。导入后同样进行连通性与数据一致性校验。
五、常见问题与校验
- 权限与路径:确保 /var/lib/redis 下的 RDB/AOF 文件属主为 redis:redis,且 dir 配置指向正确目录,否则实例可能无法读取或加载文件。
- 仅 RDB 或仅 AOF 场景:若仅有 RDB,按“方式一”恢复;若仅有 AOF,按“方式二”恢复。若两者并存,通常以 AOF 为准(更完整),但务必先做好双份备份再决定覆盖策略。
- 校验与回滚:恢复后执行 redis-cli ping、抽样键查询、慢查询/日志检查;如异常,立即用备份回滚并排查配置与文件完整性。
- 被清空后的应急:若误执行 FLUSHALL/FLUSHDB,优先检查是否仍有可用的 RDB/AOF 或历史备份;RDB 可用 redis-check-rdb 校验,AOF 可尝试启动重放或在线导入。必要时联系专业数据恢复服务。