You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose部署的MySQL数据库不时被删除,求排查解决方法

问题排查与解决方案

可能的原因及对应解决办法

1. 命名卷被意外删除

Docker命名卷dbdata如果被手动执行docker volume rm、定时清理脚本误删,会直接导致MySQL数据完全丢失。开发服务器可能存在CI/CD流程、服务器维护脚本这类自动清理Docker资源的操作,容易误删指定卷。

  • 检查服务器定时任务(执行crontab -l),若有docker volume prune这类清理命令,修改为排除dbdata:
    docker volume prune --filter "name!=dbdata"
    
  • 通过docker events实时监控卷的创建/删除事件,或查看Docker daemon日志(通常路径/var/log/docker.log),定位删除操作触发源。

2. MySQL容器启动环境变量异常

如果开发服务器上的${DB_DATABASE}等环境变量为空或被篡改,MySQL容器重启时不会自动创建指定数据库;若卷数据因损坏无法识别,MySQL会直接初始化新环境,表现为原有数据库消失。

  • 验证服务器环境变量配置:
    echo $DB_DATABASE $DB_USERNAME $DB_PASSWORD
    
    确保变量值正确且非空。
  • 给MySQL容器添加日志配置,追踪初始化过程:
    修改db服务的docker-compose.yml配置:
    db:
      image: mysql:5.7
      # ...保留原有配置
      command: ["mysqld", "--general-log=1", "--general-log-file=/var/log/mysql/general.log"]
      volumes:
        - dbdata:/var/lib/mysql
        - ./mysql-logs:/var/log/mysql # 挂载日志到宿主机方便查看
    
    启动后查看./mysql-logs/general.log,排查是否有数据库删除语句或初始化异常信息。

3. PHP应用代码误操作

本地与开发服务器的代码分支、配置可能不一致,应用中存在的重置脚本、测试用例等逻辑,在服务器环境被触发后可能误删数据库。

  • 检查应用代码中是否存在DROP DATABASE相关语句,重点排查初始化、数据库迁移脚本;
  • 查看PHP容器日志:docker logs farmers-app,排查是否有执行删除操作的记录或报错;
  • 启用MySQL查询日志(参考第2点配置),追踪发起删除操作的来源。

4. Docker Compose命令执行错误

在开发服务器上执行docker-compose down -v会删除所有关联卷,包括dbdata,直接清空数据。

  • 提醒团队成员,服务器上执行Docker Compose命令时避免使用-v参数:
    # 错误操作:会删除卷
    docker-compose down -v
    # 正确操作:仅停止容器,保留卷数据
    docker-compose down
    
  • 更新服务时直接用docker-compose up -d,无需先down再up,除非明确要清理卷数据。

5. 服务器磁盘故障

开发服务器磁盘空间不足、IO错误,可能导致MySQL数据卷损坏,MySQL启动时无法识别原有数据,进而重新初始化环境。

  • 检查服务器磁盘空间:
    df -h
    
  • 查看系统日志/var/log/syslog或/var/log/messages,排查是否有磁盘相关报错;
  • 尝试备份并恢复卷数据:
    # 备份现有卷数据
    docker run --rm -v dbdata:/data -v $(pwd):/backup ubuntu tar cvf /backup/dbdata.tar /data
    # 删除旧容器与卷
    docker-compose down -v
    # 重新启动数据库容器
    docker-compose up -d db
    # 恢复备份数据
    docker run --rm -v dbdata:/data -v $(pwd):/backup ubuntu tar xvf /backup/dbdata.tar -C / --strip-components=1
    

内容的提问来源于stack exchange,提问作者riki-tik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 08:57:20