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

磁盤滿導致 MySQL 死鎖:日志分析與緊急處理

     編輯:MySQL 綜合教學

磁盤滿導致 MySQL 死鎖:日志分析與緊急處理

現象:磁盤 100% 滿,UPDATE 寫入阻塞,連 SELECT 也卡住,show processlist 顯示首條為寫入語句狀態 Locked。

錯誤日志關鍵信息

[Warning] Disk is full writing './mysql-bin.000123' (Errcode: 28). 
Waiting for someone to free space... (Expect up to 60 secs delay...)

明確提示磁盤空間耗盡,Binlog 寫入失敗。

緊急處理步驟

  1. 確認磁盤:df -h 定位哪個分區滿。
  2. 清理空間:刪除舊日志、臨時文件、無用備份、壓縮大文件。
    勿直接刪除 Binlog,應用 PURGE BINARY LOGS BEFORE 'date' 或 expire_logs_days。
  3. 觀察恢復:MySQL 會在釋放空間後 60 秒內自動重試,無需重啟。
  4. 若已 Kill 進程:重啟後再清理空間亦可恢復。

預防措施

  • 設置 expire_logs_days = 7(或 binlog_expire_logs_seconds 8.0+)自動清理 Binlog。
  • 監控磁盤使用率,閾值 80% 告警。
  • Binlog、數據、臨時目錄掛載獨立分區,避免相互影響。
  • 定期 mysqldump 導出備份至異地存儲,釋放本地空間。

補充:Kill -3 無法 Dump 線程

磁盤滿時 JVM/進程無法寫入堆轉儲文件,屬正常現象,釋放空間後恢復。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved