MYYCMS站群数据库管理笔记 Debian 12 服务器 Redis 数据库文件查找、确认、备份与迁移教程

CMS程序

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

本教程重点解决三个问题:

  1. Redis 的 DB1 数据有没有对应的服务器文件?
  2. Redis 的数据文件具体存放在哪里?
  3. 老服务器 Redis 数据如何迁移到新服务器?

MYYCMS站群数据库管理笔记 Debian 12 服务器 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数据库默认 持久化配置

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 服务器的运行配置参数。

如果返回类似:

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 数据。


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-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-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,适合更细粒度的迁移。


十二、推荐的最终命令模板

老服务器执行

# 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 数据是否恢复成功。


【SEO业务合作】=》面向成长型与成熟品牌,提供全职SEO与兼职SEO灵活配置,支持远程办公,高效衔接内容、技术与外链;配套SEO经费支持,以可量化目标推进,表现优秀享提成奖金与长期激励。我们聚焦关键词策略、站点结构优化、内容集群、外链生态与转化提升,覆盖站内外全流程与数据跟踪,兼顾中文搜索场景与国际引擎需求,适配电商、资讯、SaaS与本地服务等多类型网站。欢迎企业、团队与个人洽谈SEO业务合作,打造稳健、可持续的自然流量增长路径。点击查看详细合作说明
CMS程序

评论

标题和URL已复制