云服务器部署的Parse Database数据仅留存数日故障排查求助
故障说明
本次部署链路涉及多个组件,以下明确环境、操作流程、故障现象,再给出诊断方法与解决方案:
部署环境
- 运行Ubuntu Server系统的腾讯云CVM实例,域名已解析到该服务器公网IP
- 部署Nginx服务监听1337端口,将请求转发到
example.com/parse - MongoDB运行在Docker容器中,监听27017端口
- index.js中配置databaseURI为
mongodb://localhost:27017/dev,SERVER_URL为https://example.com/parse
部署操作流程
- 通过SSH登录服务器后,使用screen会话执行
npm start启动Parse Server,detach screen会话后关闭SSH终端 - 本地运行Parse Dashboard,配置serverURL为
https://example.com/parse
故障现象
初始运行一切正常,可通过Parse Server仓库自带测试页、Python调用Cloud Code、Dashboard操作数据,增删类和对象均符合预期;但运行12到72小时后,Parse Dashboard中所有数据全部消失,重新写入数据可正常运行,但最长留存时间不超过72小时。
已排查进展
已确认screen detach后相关进程未被杀掉,执行top可看到npm start、mongo进程均正常运行,执行docker ps可看到容器状态正常,Nginx服务也正常运行。
诊断方向与解决方案
优先从进程异常复位、数据重置方向排查:
- 开启MongoDB全量操作日志回溯数据删除行为:执行
db.setProfilingLevel(2, { slowms: 0 })开启最高级日志记录,日志会写入mongodb.conf指定的文件中,可定位数据消失时间点的所有数据库操作。 - 修复Docker MongoDB持久化配置:Docker默认不持久化容器内存储,若容器被重建(如宿主节点自动清理、进程异常退出后重启容器),未挂载外部存储的MongoDB数据会全部丢失。
正确持久化操作步骤:- 创建命名卷:
docker volume create <volume_name> - 启动容器时添加挂载参数:
-v <volume_name>:<容器内MongoDB数据存储路径>
- 创建命名卷:
- 轻量部署优化:无需容器化管理MongoDB的场景,直接将MongoDB作为系统服务安装运行,运维更简单稳定。
内容的提问来源于stack exchange,提问作者D. Kupra
相关产品推荐
相关产品推荐

