萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL "Server shutdown in progress" 錯誤排查與恢復指南

錯誤信息

ERROR 1053 (HY000): Server shutdown in progress

根因分析

  1. MySQL 服務正在關閉/重啟:維護窗口、OOM Killer、系統更新、手動重啟
  2. 客戶端連接池持有失效連接:服務端已重啟,連接池未感知
  3. 長事務/大查詢阻塞關閉流程:innodb_fast_shutdown=0 等待提交/回滾
  4. 資源耗盡導致進程被殺:OOM、磁盤滿、文件描述符耗盡

快速排查步驟

1. 確認服務狀態

systemctl status mysqld
# 或
service mysql status
# 輸出應為 active (running)

2. 查看錯誤日誌

tail -100 /var/log/mysql/error.log
# 關鍵字:Shutdown, InnoDB: Starting shutdown, Received signal, Out of memory

3. 檢查系統日誌

journalctl -u mysqld -n 50 --no-pager
dmesg -T | grep -i -e mysql -e oom -e kill

4. 確認端口監聽

ss -ltnp | grep 3306
netstat -ltnp | grep 3306

分場景解決方案

場景 A:虛擬主機/共享主機

  • 無法控制服務端,立即提交工單 聯系服務商
  • 檢查是否有定時備份/維護窗口導致定時重啟

場景 B:自建/雲服務器(有 root 權限)

  1. 重啟服務:systemctl restart mysqld
  2. 若頻發,檢查 /etc/my.cnf:innodb_fast_shutdown = 1(默認,快速關閉)
  3. 監控內存:free -h、ps aux --sort=-%mem | head
  4. 設置監控告警:Prometheus + node_exporter + mysqld_exporter

場景 C:應用層連接池問題

# HikariCP (Java) 配置示例
spring.datasource.hikari:
  maximum-pool-size: 20
  minimum-idle: 5
  connection-timeout: 30000
  idle-timeout: 300000      # 5 分鐘空閒回收
  max-lifetime: 1200000     # 20 分鐘強制換新
  connection-test-query: SELECT 1
  validation-timeout: 5000

# PHP PDO 長連接注意
$pdo = new PDO(..., [PDO::ATTR_PERSISTENT => true]);
// 必須配合 mysqlnd 的 mysqli.reconnect 或定期 ping

預防措施

措施配置/動作
優雅關閉innodb_fast_shutdown=1(默認),避免 0 模式全量刷盤
防 OOMvm.overcommit_memory=1、配置 Swap、限制 innodb_buffer_pool_size ≤ 物理內存 70%
連接池驗證空閒檢查、最大生命周期、驗證查詢
健康檢查k8s livenessProbe: mysqladmin ping;應用啟動檢查
備份窗口錯峰避開業務高峰,避免備份鎖表導致假性 shutdown

應急恢復腳本

#!/bin/bash
# auto_restart_mysql.sh - 放入 cron 每分鐘檢查
if ! mysqladmin ping --silent; then
    echo "$(date) MySQL down, restarting..." | tee -a /var/log/mysql_auto_restart.log
    systemctl restart mysqld
    sleep 10
    if mysqladmin ping --silent; then
        echo "$(date) Restart OK" | tee -a /var/log/mysql_auto_restart.log
    else
        echo "$(date) Restart FAILED, ALERT!" | tee -a /var/log/mysql_auto_restart.log
        # 發送告警:郵件/鉤子/短信
    fi
fi
copyright © 萬盛學電腦網 all rights reserved