首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 啟動報錯:Can't create PID file - No space left on device 磁盤滿解決實錄

     編輯:MySQL 綜合教學

MySQL 啟動報錯:Can't create PID file - No space left on device 磁盤滿解決實錄

現象:MySQL 無法啟動,錯誤日志:Can't start server: can't create PID file: No space left on device (Errcode: 28)。根因:**磁盤分區 100% 滿,無法寫入 PID 文件、Binlog、臨時文件**。

三大典型案例與解決

案例一:/var/log 日志暴增(32GB)

  1. df -h 發現根分區 100%。
  2. du -sh /var/log 定位 32GB 日志。
  3. 清理舊日志:rm -f /var/log/*.gz /var/log/*.old /var/log/syslog.*。
  4. net start mysql 成功啟動。

案例二:Tomcat catalina.out 佔用 443GB

  1. df -h 磁盤滿。
  2. find /tmp -size +100000000c 發現 /tmp/catalina.out 443GB。
  3. rm -rf /tmp/catalina.out 釋放空間。
  4. 重啟 MySQL(建議重啟 OS 釋放文件句柄)。

案例三:/var/run/mysqld/mysqld.pid 寫入失敗

  1. 日志:Error writing file '/var/run/mysqld/mysqld.pid' (Errcode: 28)。
  2. 清理 /var/log 釋放空間即可恢復。

通用排查腳本

# 1. 確認哪個分區滿
df -h

# 2. 找大文件/目錄
du -h --max-depth=1 / | sort -hr | head -20
find / -xdev -type f -size +100M 2>/dev/null | head -20

# 3. 清理策略
# - 壓縮/刪除舊日志(logrotate 配置自動輪轉)
# - 清理 tmp 目錄(tmpwatch/tmpreaper 定時任務)
# - 遷移大文件至其他分區/存儲
# - 擴容磁盤/LVM

預防體系

  • 監控:Node Exporter + Prometheus + Grafana,磁盤使用率 > 80% 告警。
  • 日志輪轉:/etc/logrotate.d/mysql、/etc/logrotate.d/tomcat 配置 daily, rotate 7, compress, missingok, notifempty。
  • Binlog 過期:expire_logs_days = 7 或 8.0 binlog_expire_logs_seconds = 604800。
  • 關鍵目錄分區隔離:/var/lib/mysql、/var/log、/tmp 掛載獨立卷。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved