查日志先看 /www/server/data/*.err,再确认是否 oom killer 杀进程,检查 innodb_buffer_pool_size 是否超内存、加 swap 文件,并用轻量脚本守护 mysqld 进程。

查日志先看 /www/server/data/*.err,别急着重启
MySQL 5.7 在宝塔里“自动挂掉”,第一反应不是点启动按钮,而是立刻 SSH 登录,执行 tail -n 50 /www/server/data/*.err。这个目录下的 localhost.err 或带时间戳的 *.err 文件,才是真实报错源头。常见线索包括:InnoDB: mmap(...) failed; errno 12(内存不足)、Fatal error: InnoDB: Unable to lock ./ibdata1(系统表空间损坏)、Killed process XXX (mysqld)(OOM Killer 杀进程)。如果日志里没报错但 mysqld 进程没了,再跑 dmesg -T | grep -i "killed process" 确认是否被系统干掉。
确认是不是 OOM Killer 在背后动手
宝塔面板显示 MySQL “已停止”但能手动拉起,大概率是 Linux 内核主动杀掉了 mysqld。根本原因是 innodb_buffer_pool_size 设得太大,超出了物理内存余量。检查方法:free -h 看 available 值(不是 free),再对比 my.cnf 里 innodb_buffer_pool_size 的值。若服务器只有 2GB 内存,设成 1G 就危险;稳妥起点是 512M。还要注意其他服务(PHP-FPM、Redis)是否也在吃内存,合起来超过总内存 90% 就容易触发 OOM。
-
innodb_buffer_pool_size建议设为物理内存的 50%~60%,切勿盲目填 70% 以上 - 运行
ps aux --sort=-%mem | head -10快速定位内存大户 - 检查
ps aux | grep mysqld输出,看命令行里有没有硬编码的--innodb-buffer-pool-size=参数——如果有,删掉,让配置文件生效
加 swap 是安装和运行双阶段的刚需
低配云服务器(比如 1 核 1G)装 MySQL 5.7 失败或运行中频繁退出,常因无 swap 导致初始化或缓冲池分配失败。swap 不是“可选优化”,而是硬性依赖:没 swap = 内存分配失败 = 进程被 kill 或启动卡死。必须用文件方式加,别用分区:
MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。
- 执行
dd if=/dev/zero of=/swapfile bs=1G count=2(生成 2GB swap 文件) chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile- 写入
/etc/fstab:一行/swapfile swap swap defaults 0 0 - 验证:
swapon --show应看到/swapfile和对应大小
某些 OpenVZ 或 Docker 环境不支持 swapon,需联系服务商开启权限或换 KVM 服务器。
别信“一键修复脚本”,守护进程要自己写
宝塔自带的“开机自启”只管开机拉一次,解决不了运行中被杀后自动恢复的问题。网上流传的 sql-repair.sh 类脚本会重置配置、清日志、改权限,风险高且治标不治本。真正可靠的是轻量级轮询守护:
- 新建
/root/mysql-guard.sh,内容为循环检测 + 启动逻辑 - 关键命令:
pgrep -x "mysqld" > /dev/null || /www/server/mysql/bin/mysqld_safe --defaults-file=/www/server/mysql/etc/my.cnf & -
chmod +x /root/mysql-guard.sh,再加进/etc/rc.local开机自启 - 别封装成 systemd service——简单 while 循环比复杂 unit 更少出问题
真正麻烦的永远不是“怎么让它起来”,而是“为什么它会被杀”。日志里那行 errno 12 或 Killed process 才是必须盯住的信号,其他都是补救动作。










