# 宝塔面板 MySQL 经常自动停止怎么办？内存不足 OOM 排查与企业版自动守护教程

> 宝塔面板 MySQL 频繁自动停止通常由服务器物理内存耗尽触发 Linux 内核 OOM Killer 强制杀进程引起，常见诱因包括未配置 Swap 虚拟内存、MySQL 缓存参数过高或网站遭遇 CC 攻击与恶意爬虫并发请求。排查与根治需依次执行：通过 dmesg 检查 OOM 记录、在 Linux 工具箱添加 Swap 虚拟内存、根据机器配置下调 MySQL 性能参数、添加计划任务自动守护重启，并建议升级宝塔企业版/专业版开启 WAF 防火墙拦截恶意并发请求，从源头避免内存被打满。

- 分类: 面板配置
- 发布: 2026-10-26
- 更新: 2026-10-26
- 原文: https://pay.baota.in/article/bt-mysql-auto-stop-oom-fix

## 为什么宝塔面板的 MySQL 会频繁无故自动停止？

在使用宝塔 Linux 面板（当前同步版本 v13.1.0）或国际版 aaPanel（v8.0.7）运维 WordPress、Discuz 或各类 PHP 站点时，许多站长会遇到网站突然报错“建立数据库连接时出错（Error establishing a database connection）”或 502/500 异常。登录宝塔面板一看，发现 **MySQL 服务已经处于停止状态**，手动点击启动后网站恢复，但过几个小时甚至半夜又会自动停止。

出现这种现象，90% 以上的原因并非 MySQL 程序本身损坏，而是触发了 Linux 系统的 **OOM Killer（Out Of Memory Killer，内存耗尽保护机制）**。当服务器的物理内存与虚拟内存（Swap）被全部占满时，Linux 内核为了防止整台服务器死机，会自动挑选占用内存最多、权重最高的进程强制终止，而作为内存消耗大户的 `mysqld` 往往首当其冲。

导致内存瞬间耗尽的核心诱因主要有三类：

1. **物理内存偏小且未开启 Swap**：1核1G、1核2G 或 2核4G 的云服务器同时运行 Nginx、PHP-FPM 和 MySQL 5.7/8.0，本身剩余可用内存就非常紧张。
2. **MySQL 缓存配置超出物理承受能力**：例如在 2G 内存机器上开启了过高规格的 `innodb_buffer_pool_size` 或最大连接数。
3. **遭遇恶意 CC 攻击、垃圾爬虫或暴力扫描**：大量并发动态请求瞬间唤醒数十个 PHP-FPM 子进程并建立高并发 MySQL 查询，几秒内榨干系统内存。

---

## 分步排查与解决实操流程（从定位到调优）

请按以下 5 个标准步骤依次排查并加固你的服务器环境：

### 第一步：确认是否为 OOM Killer 杀进程与查看错误日志

首先通过 SSH 终端连接服务器，如果忘记面板入口或需要快速检查面板运行状态，可在终端输入以下命令调出宝塔管理菜单核对基础信息：

```bash
bt
```

接着，可以在 SSH 终端使用系统自带的 `dmesg -T` 命令检查内核日志，若输出中包含 `Out of memory: Kill process (mysqld)` 的字样，即可确诊是因为内存耗尽导致系统强行关闭了 MySQL。

同时，你也可以在宝塔面板左侧进入 **「软件商店」→「已安装」→ 找到 MySQL 点击「设置」→「错误日志」**，拉到最底部查看停止时间点前后的报错详情。

### 第二步：在宝塔 Linux 工具箱中添加 Swap 虚拟内存

对于物理内存小于或等于 4GB 的服务器（尤其是默认未分配 Swap 的阿里云、腾讯云实例），配置 Swap 虚拟内存是防止 OOM 最直接的缓冲手段。

1. 登录宝塔面板，进入 **「软件商店」→「系统工具」**，找到并安装 **「Linux工具箱」**。
2. 打开「Linux工具箱」，切换到 **「Swap/虚拟内存」** 选项卡。
3. 根据服务器物理内存大小填写合适的 Swap 容量并点击保存：
   - **1GB ~ 2GB 物理内存**：建议设置 `2048 MB`（2GB）Swap。
   - **4GB 物理内存**：建议设置 `4096 MB`（4GB）Swap。
   - **8GB 及以上内存**：建议设置 `4096 MB` 作为应急缓冲（注意确保磁盘剩余空间充足）。

### 第三步：调整 MySQL 性能配置方案与核心参数

很多站长安装了 MySQL 5.7 或 MySQL 8.0，这两个版本默认占用的基础内存远高于 MySQL 5.6。我们需要在宝塔面板中将其性能参数回调到合理区间：

1. 打开 **「软件商店」→ 点击 MySQL 右侧的「设置」→「性能调整」**。
2. 在顶部的 **「优化方案」** 下拉框中，严格按照你服务器的真实物理内存选择（例如 2G 内存切勿选择 `4-8G` 方案，如果同时跑了多个 PHP 站点或 Docker 容器，2G 机器甚至建议降级选择 `1-2G` 方案）。
3. 重点检查并适当调低以下两个参数：
   - `innodb_buffer_pool_size`（InnoDB 缓冲池大小）：建议控制在服务器总物理内存的 **25% ~ 40%** 以内。
   - `max_connections`（最大连接数）：中小网站将其限制在 `100` ~ `200` 即可，避免被突发连接撑爆内存。
4. 点击 **「保存」**，然后在 **「服务」** 选项卡中点击 **「重启」** 使配置生效（切勿只点重载配置）。

### 第四步：限制 PHP 并发子进程数量

如果网站遭遇频繁抓取，PHP-FPM 派生过多子进程同样会把 MySQL 挤下线。如果同时还伴随 502 报错，可参考 [宝塔面板网站出现 502 Bad Gateway 怎么排查？PHP 并发与日志定位](/article/bt-panel-502-fix-notes)。

1. 进入 **「软件商店」→ 找到当前网站使用的 PHP 版本 →「设置」→「性能调整」**。
2. 将运行模式设为静态（`static`）或按需动态（`dynamic`），对于 2G 内存服务器，将 `max_children`（最大子进程数）控制在 `15` ~ `30` 之间，避免 PHP 先一步吃光所有内存。

### 第五步：添加宝塔计划任务释放内存与守护数据库

做好内存调优后，为了防止每日流量高峰期内存碎片堆积或 MySQL 意外停止，可以在宝塔面板的 **「计划任务」** 中配置两项自动化运维任务：

1. **添加「释放内存」计划任务**：进入宝塔面板左侧的 **「计划任务」**，任务类型直接选择系统内置的 **「释放内存」**，执行周期建议设为每天凌晨（如 03:00）自动执行一次，让面板定期回收缓存。
2. **配置数据库进程守护与监控**：在计划任务中选择 **「Shell脚本」**（周期设为每 3~5 分钟一次），通过检测 `mysqld` 进程状态并在异常停止时触发服务启动操作，或者开通宝塔企业版后使用企业级监控与进程守护插件实现可视化自动拉起。

---

## 治标更要治本：用宝塔企业版/专业版拦截恶意请求并自动防灾

很多站长发现：**明明加了 Swap、调低了参数，也挂了自动守护任务，为什么 MySQL 还是隔三差五停止？**

原因在于：计划任务只能在 MySQL 挂掉后“事后拉起”，无法阻止外部的**恶意 CC 攻击、垃圾 AI 爬虫和 SQL 注入扫描**。当攻击者每秒向你的搜索页或动态接口发起数百次请求时，即使把 MySQL 重启了，10 秒后内存依然会被再次打满。

与其在免费版里反复折腾，不如直接开通本站提供的**宝塔永久专业版或企业版授权**，利用专属安全与监控插件从源头掐断异常流量：

| 运维痛点 | 宝塔免费版（手动折腾） | 宝塔专业版 / 企业版（一键根治） |
| :--- | :--- | :--- |
| **恶意 CC 与垃圾爬虫打满数据库** | 需手动翻看几十 MB 的 Nginx 日志找 IP 并手动封禁 | 开启 **Nginx/Apache 网站防火墙 (WAF)**，毫秒级自动拦截高频 CC 与恶意爬虫 |
| **不知道哪个网站/接口耗光资源** | 只能盲猜，难以区分正常访客与恶意蜘蛛 | 使用 **网站监控报表**，直观查看各站点 QPS 峰值、蜘蛛占比与异常请求路径 |
| **MySQL 频繁强退导致表损坏风险** | 需自己配置对象存储脚本，断电或强退易丢数据 | 使用 **企业级防灾备份** 插件，定时将数据库自动加密多重备份至云存储 |
| **版本与系统支持** | 基础建站环境 | 支持 Linux 版 v13.1.0、Windows 版 v8.5.2 及 aaPanel PRO v8.0.7 |

### 1. 开启企业版/专业版「网站防火墙 WAF」与「监控报表」

升级企业版或专业版后，前往「软件商店 → 企业版插件/专业版插件」安装 **Nginx 网站防火墙**（配置细节可参考 [宝塔企业版/专业版「网站防火墙 WAF」怎么配置 CC 防护与防注入？](/article/bt-waf-firewall-cc-defense-guide)）与 **网站监控报表**（详见 [宝塔专业版/企业版「网站监控报表」怎么用？区分真实访客、百度蜘蛛与恶意扫描](/article/bt-monitor-visitors-and-spiders)）。

通过 WAF 开启「CC 防护（增强模式）」与「恶意容忍度限制」，当某个 IP 高频请求动态 PHP 页面试图拖垮 MySQL 时，WAF 会在 Nginx 层直接将其拦截或弹出人机验证，请求根本不会到达 PHP 和 MySQL，内存占用自然保持平稳。同时建议配合 [宝塔企业版自动备份插件怎么用？网站与数据库定时备份到对象存储教程](/article/bt-auto-backup-to-object-storage) 做好数据库异地容灾。

### 2. 本站永久企业版/专业版开通与无损升级流程

本站提供高性价比的宝塔永久专业版、企业版及国际版 aaPanel PRO 授权服务，一次付费即可永久使用，无月费或年费续费压力：

- **固定 IP 永久授权**：仅需 **¥19.99/台**，绑定所填写的服务器公网 IPv4，适合服务器 IP 长期固定的生产环境。
- **可换 IP 永久授权**：仅需 **¥88.88/台**，新订单默认每个 IP 支持自助更换 **10** 次。购买时设置换 IP 密码，后续升级服务器配置或迁移机房时，可随时在 [自助更换 IP 页面](/change-ip) 即时迁移授权。多台服务器同时开通还可享阶梯批量折扣。

**免费版 2 步无损升级企业版/专业版操作命令：**

1. 在 [本站首页](/) 填写运行面板的服务器公网 IPv4 并通过微信或支付宝扫码完成开通（可在 [订单查询页](/order-query) 实时核对白名单状态，完整文档见 [官方配套安装与升级教程](https://baota.in/tutorial.html)）。
2. 无需重装系统或面板，保留原有全部网站、MySQL 数据库与配置，通过 SSH 连接服务器执行以下无损升级命令：

**宝塔 Linux 免费版平滑升级企业版/专业版（当前版本 v13.1.0）：**

```bash
setsid bash -c "curl -s https://baota.in/install/update6.sh | bash" &
```

**如果是全新服务器首次安装宝塔 Linux 企业版/专业版：**

```bash
curl -sSO https://baota.in/install/install_panel.sh && bash install_panel.sh
```

**如果是海外服务器升级 aaPanel PRO 版（当前版本 v8.0.7）：**

```bash
setsid bash -c "curl -s https://baota.in/install/update_panel_en.sh | bash" &
```

**如果是 Windows Server 升级宝塔 Windows 企业版/专业版（当前版本 v8.5.2）：**
在管理员 CMD 中执行：

```cmd
wget --no-check-certificate https://baota.in/win/install/panel_update.py -O C:/update.py && "C:\Program Files\python\python.exe" C:/update.py 8.5.2
```

脚本执行完毕后，刷新并重新登录宝塔面板，即可在面板左上角状态栏或「面板设置」页看到最新的版本号与企业版/专业版永久授权标识（更多版本对比可查阅 [宝塔面板免费版、专业版、企业版有什么区别？永久授权版本对比与选型](/article/bt-free-vs-enterprise-edition-comparison)），立即前往软件商店安装 WAF 防火墙与监控插件，彻底告别 MySQL 半夜自动停止的烦恼。

## 依据与适用范围

- 官方配套安装与无损升级教程文档: 本站配套的安装与升级实操文档为 https://baota.in/tutorial.html，包含宝塔 Linux 企业版/专业版、Windows 企业版/专业版及 aaPanel PRO 版的全新安装（3 步）与免费版无损升级（2 步）标准命令。
  来源: https://baota.in/tutorial.html
- 面板版本号与授权状态核对: 安装或执行升级脚本后，可在面板左上角首页状态栏或「面板设置」页核对当前版本号（Linux v13.1.0 / Windows v8.5.2 / aaPanel v8.0.7）及企业版/专业版授权状态。
  来源: https://baota.in/tutorial.html
- bt 命令行管理工具箱: Linux 面板与 aaPanel 在服务器 SSH 终端输入 `bt` 命令即可调出面板管理菜单（支持查看面板完整地址、重置面板管理员密码、修改端口、清除登录限制等，具体编号以当前版本显示为准）。
  来源: https://baota.in/tutorial.html
- 本站产品覆盖与永久授权服务: 本站提供宝塔永久专业版与企业版、Linux 专业版与企业版、Windows 专业版与企业版以及国际英文版 aaPanel PRO 的授权开通、订单查询与可换 IP 自助换绑服务。绑定服务器公网 IPv4 后即可解锁对应版本的专业版与企业版插件功能。
  来源: https://pay.baota.in/
- 宝塔 Linux 免费版无损升级企业版/专业版命令: 宝塔 Linux 免费版无损升级企业版/专业版：无需重装系统或面板，在已安装宝塔的服务器 SSH 终端执行 `setsid bash -c "curl -s https://baota.in/install/update6.sh | bash" &`，脚本后台完成平滑升级，保留原有网站、数据库与配置，完成后刷新面板即可使用企业版插件。
  来源: https://baota.in/tutorial.html
- 宝塔 Linux 专业版/企业版全新安装命令: 宝塔 Linux 专业版/企业版全新安装：先在本站绑定服务器公网 IP 开通授权，再通过 SSH 连接服务器（root 权限）执行 `curl -sSO https://baota.in/install/install_panel.sh && bash install_panel.sh`，安装完成后在云安全组放行面板端口并用输出的完整安全入口地址登录。
  来源: https://baota.in/tutorial.html
- aaPanel PRO 升级命令: aaPanel 免费版无损升级 PRO 版：在已安装 aaPanel 的服务器 SSH 终端执行 `setsid bash -c "curl -s https://baota.in/install/update_panel_en.sh | bash" &`，升级完成后重新登录面板即可解锁 PRO 版插件。
  来源: https://baota.in/tutorial.html
- 宝塔 Windows 专业版/企业版安装与升级命令: 宝塔 Windows 专业版/企业版安装与升级：远程桌面进入 Windows 服务器（新装先运行 BtSoft.exe 安装基础面板），以管理员身份打开 CMD 执行 `wget --no-check-certificate https://baota.in/win/install/panel_update.py -O C:/update.py && "C:\Program Files\python\python.exe" C:/update.py 8.5.2`，命令末尾参数与当前版本 8.5.2 保持一致。
  来源: https://baota.in/tutorial.html
- 固定 IP 永久授权套餐: 本站固定 IP 永久授权当前单价为 ¥19.99/台，一次付费无月费，绑定所填写的服务器公网 IPv4；适合服务器公网 IP 长期保持不变的建站与生产环境（不包含自助换 IP 权益）。
  来源: https://pay.baota.in/
- 可换 IP 永久授权套餐与换绑规则: 本站可换 IP 永久授权当前单价为 ¥88.88/台，一次付费无月费。新订单默认每个 IP 可自助更换 10 次，购买时设置 4–12 位换 IP 密码，换机或迁移机房时可随时自助迁移绑定 IP；历史订单以原订单记录的剩余额度为准。
  来源: https://pay.baota.in/change-ip
- 企业版与专业版核心插件矩阵: 开通宝塔企业版或专业版授权后，可在面板「软件商店 → 专业版插件 / 企业版插件」中直接安装与管理专属插件，包括网站防火墙（Nginx/Apache WAF）、网站防篡改、网站监控报表、企业级防灾备份、数据同步工具、系统加固、木马查杀、负载均衡等。
  来源: https://docs.bt.cn/
- 免费版、专业版、企业版与 aaPanel PRO 版本定位差异: 宝塔面板分为免费版、专业版与企业版（含 Linux 版、Windows 版）以及国际版 aaPanel PRO：免费版提供基础 LNMP/LAMP 建站环境；专业版解锁 WAF 防火墙与监控报表等进阶插件；企业版涵盖专业版全部能力并进一步开放网站防篡改、多云防灾备份、数据同步工具、负载均衡等企业级安全与运维插件。
  来源: https://www.bt.cn/new/linuxent.html

## 常见问题

### 为什么设置了宝塔计划任务守护，MySQL 重启后偶发无法启动或提示表损坏？

因为 Linux OOM Killer 采用强制杀死进程（SIGKILL）的方式终止 MySQL，如果当时恰好有大量写入操作，可能导致 InnoDB 日志或 PID 锁文件异常。建议除了设置守护任务外，务必配置 Swap 虚拟内存，并开通宝塔企业版/专业版使用「网站防火墙 WAF」拦截恶意高并发请求，同时开启「企业级防灾备份」定时备份数据库，从源头避免触发 OOM 强退。

### 1核2G 的服务器安装哪个版本的 MySQL 最不容易自动停止？

对于 1核2G 或 2核2G 的入门级云服务器，最推荐安装 MySQL 5.5 或 MySQL 5.6（或选用 MariaDB 10.2/10.4）。MySQL 5.7 与 MySQL 8.0 的默认内存开销较大，如果业务必须使用 5.7/8.0，请务必在宝塔「Linux工具箱」中添加 2048MB 以上的 Swap 虚拟内存，并将 MySQL 性能调整方案设为「1-2G」。

### 从宝塔免费版升级到本站的永久企业版，会影响正在运行的 MySQL 数据库吗？

完全不会。在本站绑定服务器公网 IP 开通授权（固定 IP ¥19.99/台，可换 IP ¥88.88/台）后，只需在 SSH 终端执行无损升级命令，脚本仅同步面板文件与解锁企业版插件权限，不会重启或改动现有的 Nginx、PHP 及 MySQL 数据库数据，实现平滑无缝升级。

### 后期因为内存不足升级更换了新服务器，宝塔企业版授权 IP 可以迁移吗？

如果您购买的是「可换 IP 永久授权（¥88.88/台）」，新订单默认包含 10 次自助换绑额度。更换高配服务器后，只需在本站的「自助换 IP」页面输入原绑定 IP、购买时设置的换 IP 密码以及新服务器公网 IPv4，即可即时将企业版授权迁移至新机器。

