redis的aof方式恢复

redis的aof方式恢复

情况一:你本来就有 AOF 文件

如果你之前开启过 AOF(或者有别人给的appendonly.aof文件),恢复步骤如下:

1. 准备 AOF 文件

# 将 AOF 文件放到目标数据目录cp/path/to/appendonly.aof /www/server/redis/chownredis:redis /www/server/redis/appendonly.aof

2. 修改配置文件开启 AOF

vim/www/server/redis/redis.conf# 修改以下配置:appendonlyyes# 改成 yesappendfilename"appendonly.aof"appendfsync everysec# 你已经有了dir/www/server/redis/# 确保路径正确

3. 清理旧的 RDB(可选但建议)

# 备份旧 RDBmv/www/server/redis/dump.rdb /www/server/redis/dump.rdb.bak

4. 启动/重启 Redis

# 如果是重启systemctl restart redis-server# 如果是首次启动redis-server /www/server/redis/redis.conf

5. 验证恢复

redis-cli-a1244444DBSIZE redis-cli-a1244444INFO Persistence|grepaof

关键点:当同时存在 AOF 和 RDB 文件时,Redis 会优先使用 AOF 恢复,因为 AOF 数据更完整。


情况二:你只有 RDB,但想转成 AOF 恢复

你目前只有dump.rdb,没有 AOF 文件。如果你想用 AOF 方式启动,需要先把 RDB 转换成 AOF:

方法 A:临时开启 AOF,让 Redis 自动生成

# 1. 确保有 RDB 文件ls-la/www/server/redis/dump.rdb# 2. 以 RDB 方式正常启动 Redis(临时)systemctl start redis-server# 3. 在线开启 AOF(不重启)redis-cli-a1244444CONFIG SET appendonlyyes# 4. 检查 AOF 是否生成ls-la/www/server/redis/appendonly.aof# 5. 持久化配置(让重启后也生效)# 修改 redis.conf:appendonly yesvim/www/server/redis/redis.conf

这样 Redis 会基于当前内存数据重建 AOF 文件,包含了所有现有数据。

方法 B:使用 redis-cli 手动转换(更可控)

# 1. 启动 Redis(用 RDB 恢复)systemctl start redis-server# 2. 执行 BGREWRITEAOF 命令,强制生成 AOFredis-cli-a1244444BGREWRITEAOF# 3. 监控转换进度redis-cli-a1244444INFO Persistence|grepaof_rewrite_in_progress# 返回 0 表示完成# 4. 此时 /www/server/redis/appendonly.aof 已生成# 5. 修改配置开启 AOFredis-cli-a1244444CONFIG SET appendonlyyes

完整的 AOF 恢复流程(如果有备份文件)

假设你从其他地方拿到了一个appendonly.aof文件:

#!/bin/bash# 完整的 AOF 恢复脚本REDIS_PASS="1244444"DATA_DIR="/www/server/redis"AOF_BACKUP="/tmp/appendonly.aof"# 你的备份文件路径# 1. 停止 Redissystemctl stop redis-server# 2. 备份现有数据(以防万一)mv${DATA_DIR}/dump.rdb${DATA_DIR}/dump.rdb.$(date+%Y%m%d_%H%M%S)mv${DATA_DIR}/appendonly.aof${DATA_DIR}/appendonly.aof.old2>/dev/null# 3. 拷贝 AOF 备份到数据目录cp${AOF_BACKUP}${DATA_DIR}/chownredis:redis${DATA_DIR}/appendonly.aof# 4. 修改配置文件(确保 appendonly yes)sed-i's/^appendonly no/appendonly yes/'${DATA_DIR}/redis.conf# 5. 启动 Redissystemctl start redis-server# 6. 验证数据redis-cli-a${REDIS_PASS}DBSIZE redis-cli-a${REDIS_PASS}INFO Persistence

AOF 文件损坏修复

如果启动时提示 AOF 文件有问题:

# 1. 检查并修复 AOFredis-check-aof--fix/www/server/redis/appendonly.aof# 2. 如果修复失败,可以尝试截断到最后一个有效命令redis-check-aof --truncate-to-end /www/server/redis/appendonly.aof# 3. 重新启动systemctl restart redis-server

目前是rdb后面想使用aof

# 步骤1:用现有 RDB 启动 Redissystemctl start redis-server# 步骤2:在线开启 AOFredis-cli-a1244444CONFIG SET appendonlyyes# 步骤3:等待 AOF 文件生成完成redis-cli-a1244444BGREWRITEAOF# 步骤4:修改配置文件,永久生效sed-i's/appendonly no/appendonly yes/'/www/server/redis/redis.conf# 步骤5:验证redis-cli-a1244444INFO Persistence|grep-E"aof_enabled|aof_current_size"