故障排查GitHub issue3 分钟阅读排错/错误码

解决FastGPT私有部署场景下MySQL启动失败的问题

用户使用FastGPT v4.8.9私有部署版本,通过官方docker-compose文件构建服务时,MySQL和oneapi容器均无法正常启动。

现象

用户使用FastGPT v4.8.9私有部署版本,通过官方docker-compose文件构建服务时,MySQL和oneapi容器均无法正常启动。MySQL启动日志包含'--skip-host-cache' is deprecated'default_authentication_plugin' is deprecatedSetting lower_case_table_names=2等废弃配置与系统提示警告,以及核心报错Cannot create redo log files because data files are corrupt or the database was not shut down cleanly after creating the data files,最终mysqld服务中止。将oneapi版本修改为latest后,oneapi可正常启动,但MySQL启动失败的问题仍存在。

可能原因

从日志信息来看,存在两类核心问题:一是MySQL启动时出现废弃配置参数的警告,不影响核心启动逻辑;二是InnoDB存储引擎无法创建redo日志文件,原因可能是数据文件损坏,或是创建数据文件后数据库未正常关闭。结合用户修改oneapi版本后oneapi可启动的现象,推测存在FastGPT v4.8.9配套的oneapi版本与当前docker-compose配置不匹配的问题,导致整体服务启动异常。

排查步骤

  1. 通过docker logs [MySQL容器名称]命令查看MySQL容器的完整启动日志,确认是否包含Cannot create redo log files because data files are corrupt or the database was not shut down cleanly after creating the data files这类核心报错文本。
  2. 核对当前部署的FastGPT版本为v4.8.9,检查配套docker-compose配置中oneapi的镜像版本信息。
  3. 登录MySQL数据存储目录(本次为/var/lib/mysql/),检查目录内文件状态,确认是否存在数据文件损坏或未正常关闭数据库的遗留问题。
  4. 测试将oneapi容器的镜像版本调整为latest,重新启动服务,验证是否能解决oneapi启动失败的问题。

解决与验证

针对组件版本不匹配问题:将oneapi容器的镜像版本调整为latest,重新启动服务,可恢复oneapi的正常启动。针对MySQL启动失败问题:先通过cp -r /var/lib/mysql /var/lib/mysql_backup命令备份原有MySQL数据目录,再清空该目录内的所有文件,重新启动MySQL容器完成数据库初始化,修复数据文件损坏或未正常关闭导致的redo日志创建失败问题。验证时,启动所有容器后,查看日志无上述关键报错,MySQL和oneapi均正常运行。

来源:FastGPT GitHub issue