jumpserver3.10.21退回3.6.1 Redis问题Can't handle RDB format version 10
一、回退操作步骤(按顺序执行)
1. 停止当前 3.10.21 版本的 JumpServer 服务
cd /opt/jumpserver-offline-installer-v3.10.21-amd64
./jmsctl.sh stop
2. 备份当前 3.10.21 的数据库(双保险)
即使你之前有备份,也要再备份一次当前状态,防止降级失败后无法恢复:
./jmsctl.sh backup_db
备份文件会生成在
/data/jumpserver/db_backup/ 目录下。3. 找到 3.6.1 版本的离线安装包
把 v3.6.1 的离线安装包放到服务器上,解压到 /opt/jumpserver-offline-installer-v3.6.1-amd64 目录。
进入 3.6.1 目录,加载离线镜像:
cd /opt/jumpserver-offline-installer-v3.6.1-amd64
./jmsctl.sh load_image
4. 恢复 3.6.1 版本的数据库备份
⚠️ 注意:必须用 3.6.1 版本的备份文件恢复,不能用 3.10 的备份恢复到 3.6
# 进入 3.6.1 安装包目录
cd /opt/jumpserver-offline-installer-v3.6.1-amd64
# 执行数据库恢复命令,替换成你自己的备份文件路径
./jmsctl.sh restore_db /data/jumpserver/db_backup/jumpserver-v3.6.1-2026-04-18_16:31:13.sql
5. 启动 3.6.1 版本的 JumpServer
./jmsctl.sh start
问题:

cd /opt/jumpserver-offline-installer-v3.6.1-amd64
./jmsctl.sh tail redis

Can't handle RDB format version 10
🔍 问题原因
现在用的 Redis 6.2.13 版本,无法读取从高版本 Redis(比如 JumpServer v3.10.21 里用的 Redis 7.0)生成的
RDB 持久化文件。高版本 Redis 生成的 RDB 文件格式(version 10),低版本 Redis 不兼容,直接读取会报错崩溃。
✅ 解决步骤(按顺序执行)
1. 停止 JumpServer 服务
cd /opt/jumpserver-offline-installer-v3.6.1-amd64
./jmsctl.sh stop
2. 删除不兼容的 Redis 持久化文件
这些文件是高版本生成的,低版本无法读取,直接删除即可(JumpServer 的 Redis 数据都是临时缓存,不会影响业务数据):
# 删除 Redis 数据目录
docker rm -f jms_redis
rm -rf /data/jumpserver/redis/* /data/jumpserver/redis/.* 2>/dev/null
3. 临时修改配置,禁用 RDB/AOF 持久化(跳过读取)
这是关键一步,让 Redis 启动时不加载任何旧数据,只创建一个全新的空实例:
# 进入 compose 配置目录
cd compose/
# 编辑 redis 配置文件
vim docker-compose-redis.yml
直接修改
command 字段,加上禁用持久化的参数,让 Redis 启动时不读取旧数据。
你当前的
command 是:command: ["redis-server", "/etc/redis.conf", "--requirepass", "$REDIS_PASSWORD"]
✅ 修改后的完整配置
把
command 改成下面这样,添加 --appendonly no --save "":command: ["redis-server", "/etc/redis.conf", "--requirepass", "$REDIS_PASSWORD", "--appendonly", "no", "--save", ""]
保存后重启服务
./jmsctl.sh start
启动后改回去。。。
command: ["redis-server", "/etc/redis.conf", "--requirepass", "$REDIS_PASSWORD"]
浙公网安备 33010602011771号