MYYCMS站群数据库管理笔记 Debian 12 服务器 Redis 数据库文件查找、确认、备份与迁移教程
目前MYYCMS站群排名效果非常不错,MYYCMS站群标记 <!-- https://github.com/program-myyjjpp --> ,本站最近有记录一些MYYCMS站群排名的案例,确实非常不错。MYYCMS站群使用PHP环境,利用Mysql配合Redis数据库,网站访问速度非常快,一台服务器可以平稳运行2500个站点左右。目前在管理MYYCMS站群的过程中,有遇到服务器硬盘出现故障的,今天记录一下MYYCMS站群服务器出现故障,怎么查找 Redis数据库文件,并转移到新的服务器上恢复数据,MYYCMS站群服务器运行环境说明:
Debian 12
Nginx 1.30
PHP 8.2
MySQL 8.0
宝塔面板 V11.7
Redis 7.4.7
Redis 数据主要在 DB1
本教程重点解决三个问题:
-
Redis 的 DB1 数据有没有对应的服务器文件?
-
Redis 的数据文件具体存放在哪里?
-
老服务器 Redis 数据如何迁移到新服务器?

一、先理解 Redis 的数据文件机制
Redis 数据默认存放在内存中。如果开启了持久化,Redis 会把内存数据保存到磁盘文件里。Redis 官方文档说明,Redis 主要有两种持久化方式:RDB 快照和 AOF 追加日志。RDB 会把某个时间点的数据集保存成快照文件,默认文件名通常是 dump.rdb;AOF 则会记录写操作日志,用于重放恢复数据。
常见持久化文件如下:
类型
常见文件/目录
说明
RDB
dump.rdb
Redis 数据快照文件
AOF
appendonly.aof 或 appendonlydir/
Redis 写操作追加日志
配置文件
redis.conf
Redis 配置文件
在本次服务器中,宝塔 Redis 面板显示:
AOF appendonly:关闭
RDB 持久化:开启
持久化文件存储路径:/www/server/redis/
所以当前主要关注的是:
/www/server/redis/dump.rdb
MYYCMS站群 使用的Redis数据库默认 持久化配置

二、Redis DB1 会不会单独生成一个文件?
不会。
Redis 的 DB0、DB1、DB2 等是逻辑数据库,不是独立文件。即使数据主要保存在 DB1,Redis 也不会生成:
db1.rdb
redis_db1.rdb
dump_db1.rdb
而是把整个 Redis 实例里的所有逻辑库一起保存到同一个 RDB 或 AOF 持久化文件中。
也就是说,如果 DB1 数据已经落盘,它会和 DB0、DB2 等一起保存在:
/www/server/redis/dump.rdb
本次服务器实际检查结果中,/www/server/redis/ 目录下确实存在:
dump.rdb
文件大小约:
1.29 GB
修改时间:
2026-05-25 12:11:35
这说明 Redis 已经生成过 RDB 快照文件,并且数据量较大。
三、如何确认 Redis 数据文件的真实路径?
不要只看宝塔面板,也不要只凭目录猜。最准确的方法是通过 Redis 当前运行配置确认。
1. 查看 Redis 数据目录和 RDB 文件名
执行:
redis-cli CONFIG GET dir
redis-cli CONFIG GET dbfilename
如果 Redis 设置了密码:
redis-cli -a ‘你的Redis密码’ CONFIG GET dir
redis-cli -a ‘你的Redis密码’ CONFIG GET dbfilename
Redis 官方文档说明,CONFIG GET 用于读取当前 Redis 服务器的运行配置参数。(Redis)
如果返回类似:
dir
/www/server/redis
dbfilename
dump.rdb
那么 Redis RDB 文件路径就是:
/www/server/redis/dump.rdb
计算规则很简单:
RDB完整路径 = dir + “/” + dbfilename
2. 查看 AOF 是否开启
执行:
redis-cli CONFIG GET appendonly
redis-cli CONFIG GET appendfilename
redis-cli CONFIG GET appenddirname
如果返回:
appendonly
no
说明 AOF 没有开启。
如果返回:
appendonly
yes
则说明 AOF 开启,需要继续确认 AOF 文件或目录。Redis 官方说明,RDB 和 AOF 可以同时开启;如果 AOF 开启,启动恢复时通常会优先使用更高持久性保障的 AOF 数据。(GitHub)
3. 一条命令查看核心配置
推荐直接执行:
redis-cli CONFIG GET dir dbfilename appendonly appendfilename appenddirname save
带密码:
redis-cli -a ‘你的Redis密码’ CONFIG GET dir dbfilename appendonly appendfilename appenddirname save
重点看:
dir
dbfilename
appendonly
appendfilename
appenddirname
save
四、如何在宝塔文件管理器中确认 Redis 文件?
在宝塔面板中进入:
/www/server/redis/
重点检查这些文件:
dump.rdb
redis.log
redis.pid
redis.conf
appendonly.aof
appendonlydir/
你这台服务器实际看到的是:
/www/server/redis/dump.rdb
并且文件信息大致为:
文件名:dump.rdb
大小:1.29 GB
权限/所有者:644/redis
修改时间:2026-05-25 12:11:35
所以当前 Redis 的主要数据落盘文件就是:
/www/server/redis/dump.rdb
五、如何确认 DB1 是否真的有数据?
1. 查看 Redis 所有逻辑库的数据概况
执行:
redis-cli INFO keyspace
带密码:
redis-cli -a ‘你的Redis密码’ INFO keyspace
如果 DB1 有数据,会看到类似:
# Keyspace
db1:keys=123456,expires=1000,avg_ttl=xxxx
说明:
字段
含义
db1
第 1 号逻辑数据库
keys
key 总数量
expires
设置了过期时间的 key 数量
avg_ttl
平均 TTL
2. 单独查看 DB1 的 key 数量
执行:
redis-cli -n 1 DBSIZE
带密码:
redis-cli -a ‘你的Redis密码’ -n 1 DBSIZE
如果返回:
(integer) 500000
说明 DB1 里有 500000 个 key。
3. 抽样查看 DB1 中的 key
执行:
redis-cli -n 1 SCAN 0 COUNT 20
带密码:
redis-cli -a ‘你的Redis密码’ -n 1 SCAN 0 COUNT 20
这可以抽样查看 DB1 中的部分 key。
注意:不要在生产环境随便执行 KEYS *,如果 key 很多,可能阻塞 Redis。
六、如何确认 RDB 是否最新保存成功?
1. 查看持久化状态
执行:
redis-cli INFO persistence
带密码:
redis-cli -a ‘你的Redis密码’ INFO persistence
重点看:
rdb_bgsave_in_progress
rdb_last_bgsave_status
rdb_last_save_time
正常状态应该类似:
rdb_bgsave_in_progress:0
rdb_last_bgsave_status:ok
含义:
字段
正常值
说明
rdb_bgsave_in_progress
0
当前没有正在执行 BGSAVE
rdb_last_bgsave_status
ok
最近一次 RDB 保存成功
rdb_last_save_time
时间戳
最近一次保存时间
2. 手动生成最新 RDB 快照
迁移前,建议在老服务器执行一次:
redis-cli BGSAVE
带密码:
redis-cli -a ‘你的Redis密码’ BGSAVE
Redis 官方文档说明,RDB 快照可以通过 SAVE 或 BGSAVE 手动触发;BGSAVE 会在后台生成快照,通常比 SAVE 更适合生产环境。(Redis)
执行后再次检查:
redis-cli INFO persistence
ls -lh /www/server/redis/dump.rdb
确认:
rdb_last_bgsave_status:ok
并且 dump.rdb 修改时间已经更新。
七、Redis 数据迁移方案:直接复制 dump.rdb
如果你的情况是:
老服务器 Redis 使用 RDB
新服务器 Redis 可以被老数据覆盖
AOF 没有开启,或者准备关闭 AOF
新服务器 Redis 版本等于或高于老服务器
那么可以直接复制:
/www/server/redis/dump.rdb
到新服务器对应目录,覆盖新服务器的 Redis RDB 文件。
Redis 启动时会从持久化文件恢复数据;RDB 文件本质是 Redis 某个时间点的数据集快照。(Redis)
八、迁移前检查清单
老服务器检查
redis-cli INFO keyspace
redis-cli INFO persistence
redis-cli CONFIG GET dir dbfilename appendonly save
ls -lh /www/server/redis/dump.rdb
如果有密码:
redis-cli -a ‘你的Redis密码’ INFO keyspace
redis-cli -a ‘你的Redis密码’ INFO persistence
redis-cli -a ‘你的Redis密码’ CONFIG GET dir dbfilename appendonly save
ls -lh /www/server/redis/dump.rdb
确认结果:
dir = /www/server/redis
dbfilename = dump.rdb
appendonly = no
rdb_last_bgsave_status = ok
新服务器检查
redis-cli CONFIG GET dir dbfilename appendonly
确认新服务器 Redis 也使用:
dir = /www/server/redis
dbfilename = dump.rdb
如果新服务器返回:
dir
/www/server/redis/redis_cache
dbfilename
dump.rdb
那么你应该把文件放到:
/www/server/redis/redis_cache/dump.rdb
而不是:
/www/server/redis/dump.rdb
所以迁移前一定要以新服务器的 CONFIG GET dir dbfilename 为准。
九、完整迁移步骤
下面以老服务器 Redis 数据文件为:
/www/server/redis/dump.rdb
新服务器 Redis 数据文件也为:
/www/server/redis/dump.rdb
为例。
第一步:老服务器生成最新快照
在老服务器执行:
redis-cli BGSAVE
带密码:
redis-cli -a ‘你的Redis密码’ BGSAVE
等待几秒后检查:
redis-cli INFO persistence
ls -lh /www/server/redis/dump.rdb
确认:
rdb_last_bgsave_status:ok
第二步:老服务器确认 DB1 数据
redis-cli INFO keyspace
redis-cli -n 1 DBSIZE
带密码:
redis-cli -a ‘你的Redis密码’ INFO keyspace
redis-cli -a ‘你的Redis密码’ -n 1 DBSIZE
记录老服务器 DB1 的 key 数量,迁移后用于对比。
第三步:复制 dump.rdb 到新服务器
在老服务器执行:
scp /www/server/redis/dump.rdb root@新服务器IP:/root/dump.rdb
如果 SSH 端口不是 22,例如 2222:
scp -P 2222 /www/server/redis/dump.rdb root@新服务器IP:/root/dump.rdb
如果文件比较大,也可以使用 rsync:
rsync -avP /www/server/redis/dump.rdb root@新服务器IP:/root/dump.rdb
第四步:新服务器停止 Redis
在新服务器执行:
/etc/init.d/redis stop
或者:
systemctl stop redis
如果是宝塔面板安装的 Redis,也可以在宝塔面板中停止 Redis。
不要在 Redis 运行时直接覆盖 dump.rdb。
第五步:备份新服务器原 Redis 文件
在新服务器执行:
cp /www/server/redis/dump.rdb /www/server/redis/dump.rdb.bak.$(date +%F_%H%M%S) 2>/dev/null
如果新服务器可能有 AOF 文件,也建议先查一下:
find /www/server/redis/ -type f \( -name “*.aof” -o -name “*manifest*” \) 2>/dev/null
如果新服务器 AOF 是开启的,建议先关闭 AOF 或移走旧 AOF 文件,避免 Redis 启动时优先加载 AOF,导致复制过去的 RDB 没有生效。
第六步:覆盖新服务器 dump.rdb
cp /root/dump.rdb /www/server/redis/dump.rdb
chown redis:redis /www/server/redis/dump.rdb
chmod 644 /www/server/redis/dump.rdb
确认文件:
ls -lh /www/server/redis/dump.rdb
ls -l /www/server/redis/dump.rdb
正常权限类似:
-rw-r–r– 1 redis redis 1.29G dump.rdb
你老服务器截图中的权限/所有者是:
644/redis
所以新服务器保持:
chmod 644
chown redis:redis
比较稳妥。
第七步:启动新服务器 Redis
/etc/init.d/redis start
或者:
systemctl start redis
然后检查:
redis-cli PING
redis-cli INFO keyspace
redis-cli -n 1 DBSIZE
正常应该返回:
PONG
并且 INFO keyspace 中应该能看到 DB1 数据,例如:
db1:keys=xxxxx,expires=xxx,avg_ttl=xxxx
如果迁移成功,新服务器:
redis-cli -n 1 DBSIZE
返回的数量应该和老服务器迁移前记录的 DB1 数量接近或一致。
十、迁移后验证方法
1. 查看 DB1 key 数量
redis-cli -n 1 DBSIZE
2. 抽样查看 DB1 key
redis-cli -n 1 SCAN 0 COUNT 20
3. 查看 Redis 是否正常运行
redis-cli PING
正常返回:
PONG
4. 查看 Redis 日志
宝塔环境常见日志文件:
/www/server/redis/redis.log
查看最后 100 行:
tail -n 100 /www/server/redis/redis.log
重点看是否有:
DB loaded from disk
Ready to accept connections
或者是否出现:
Can’t handle RDB format version
Fatal error loading the DB
Permission denied
十一、常见问题处理
问题 1:复制了 dump.rdb,但新服务器没有数据
优先检查:
redis-cli CONFIG GET dir dbfilename appendonly
可能原因:
原因
说明
文件放错目录
Redis 实际 dir 不是 /www/server/redis
文件名不对
Redis 实际 dbfilename 不是 dump.rdb
Redis 没重启
Redis 只会在启动时加载 RDB
AOF 开启
Redis 可能优先加载 AOF
权限错误
Redis 用户无法读取 dump.rdb
解决:
chown redis:redis /www/server/redis/dump.rdb
chmod 644 /www/server/redis/dump.rdb
/etc/init.d/redis restart
问题 2:Redis 启动失败
查看日志:
tail -n 200 /www/server/redis/redis.log
常见原因:
错误
可能原因
Permission denied
文件权限或目录权限不对
Can't handle RDB format version
新服务器 Redis 版本太低
No such file or directory
RDB 路径不对
Out Of Memory
新服务器内存不足
如果是版本问题,建议新服务器 Redis 版本等于或高于老服务器。
问题 3:新服务器启动后数据又被覆盖
可能是你在 Redis 运行时复制了 RDB,之后 Redis 自动执行 RDB 保存,把你复制的文件覆盖了。
正确做法:
停止 Redis
覆盖 dump.rdb
设置权限
启动 Redis
不要在 Redis 运行时覆盖。
问题 4:新服务器已经有 Redis 数据,能不能直接覆盖?
如果新服务器 Redis 里的数据不重要,可以直接覆盖。
如果新服务器 Redis 里已经有重要数据,不建议直接覆盖。直接覆盖 RDB 后重启,相当于用老服务器快照替换新服务器 Redis 全量数据。
这种情况下可以考虑:
DUMP + RESTORE
MIGRATE
业务层重新写入
分库导入
Redis 官方 MIGRATE 命令内部会使用 DUMP 序列化 key,再用 RESTORE 在目标 Redis 中恢复 key,适合更细粒度的迁移。(Redis)
十二、推荐的最终命令模板
老服务器执行
# 1. 查看 Redis 数据情况
redis-cli INFO keyspace
redis-cli -n 1 DBSIZE
2. 手动生成最新 RDB 快照
redis-cli BGSAVE
3. 查看 RDB 保存状态
redis-cli INFO persistence
4. 查看 Redis 持久化配置
redis-cli CONFIG GET dir dbfilename appendonly save
5. 确认 RDB 文件
ls -lh /www/server/redis/dump.rdb
6. 复制到新服务器
scp /www/server/redis/dump.rdb root@新服务器IP:/root/dump.rdb
如果有密码:
redis-cli -a ‘你的Redis密码’ INFO keyspace
redis-cli -a ‘你的Redis密码’ -n 1 DBSIZE
redis-cli -a ‘你的Redis密码’ BGSAVE
redis-cli -a ‘你的Redis密码’ INFO persistence
redis-cli -a ‘你的Redis密码’ CONFIG GET dir dbfilename appendonly save
新服务器执行
# 1. 确认新服务器 Redis 持久化路径
redis-cli CONFIG GET dir dbfilename appendonly
2. 停止 Redis
/etc/init.d/redis stop
3. 备份原有 RDB
cp /www/server/redis/dump.rdb /www/server/redis/dump.rdb.bak.$(date +%F_%H%M%S) 2>/dev/null
4. 覆盖 RDB
cp /root/dump.rdb /www/server/redis/dump.rdb
5. 设置权限
chown redis:redis /www/server/redis/dump.rdb
chmod 644 /www/server/redis/dump.rdb
6. 启动 Redis
/etc/init.d/redis start
7. 验证数据
redis-cli PING
redis-cli INFO keyspace
redis-cli -n 1 DBSIZE
如果新服务器 Redis 使用 systemd:
systemctl stop redis
systemctl start redis
十三、本次服务器的最终结论
根据本次排查过程,你这台老服务器的 Redis 数据文件位置是:
/www/server/redis/dump.rdb
当前 Redis 状态可以总结为:
Redis 数据主要在:DB1
AOF:关闭
RDB:开启
RDB 文件:/www/server/redis/dump.rdb
RDB 文件大小:约 1.29 GB
DB1 是否单独文件:不是
迁移方式:可以复制 dump.rdb 到新服务器对应 Redis dir 目录
迁移时最重要的原则是:
先在老服务器 BGSAVE
再复制 dump.rdb
新服务器先停止 Redis
备份新服务器旧 dump.rdb
覆盖 dump.rdb
修正 redis:redis 权限
启动 Redis
检查 DB1 数据
一句话总结:你可以通过复制 /www/server/redis/dump.rdb 完成 Redis 数据迁移,但必须确认新服务器 Redis 的 dir 和 dbfilename,并且必须在 Redis 停止状态下覆盖文件,启动后再用 INFO keyspace 和 DBSIZE 验证 DB1 数据是否恢复成功。