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

MySQL 啟動錯誤 1067 秒解:C 盤 Temp 垃圾文件導致服務掛掉的排查與根治

     編輯:MySQL 綜合教學

錯誤現象

Windows 服務管理器中啟動 MySQL 服務失敗,彈窗提示:Error 1067: The process terminated unexpectedly。事件查看器記錄無具體錯誤,錯誤日誌 `.err` 可能為空或截斷。

根因分析

MySQL 運行時在 `C:\Windows\Temp` 產生大量臨時文件 (如 `MYxxxx.tmp`、排序文件、內部臨時表)。長期運行未清理,文件數達十萬級,導致:

  • 目錄枚舉極慢,服務啟動掃描超時
  • 檔案系統元資料 (MFT) 膨脹,I/O 性能崩潰
  • 磁碟空間耗盡 (單文件小但數量巨大)

立即修復:命令行強力清理

嚴禁用資源管理器打開該目錄刪除 (會卡死 Explorer 甚至整台伺服器)。

# 以管理員身份打開 CMD
cd /d C:\Windows\Temp
del /f /q /s MY*.tmp
del /f /q /s *.tmp
# 或使用更安全的模式匹配
forfiles /p "C:\Windows\Temp" /m "MY*.tmp" /c "cmd /c del @path" /d -1

等待命令完成 (可能需數分鐘),隨後重啟 MySQL 服務即可恢復。

根治方案:定時自動清理

方法一:批處理 + 任務計劃程式

建立 `clean_mysql_temp.bat`:

@echo off
cd /d C:\Windows\Temp
del /f /q MY*.tmp >nul 2>&1
del /f /q *.tmp >nul 2>&1
echo %date% %time% MySQL Temp cleaned >> C:\Logs\clean_mysql_temp.log

任務計劃程式 → 建立基本任務 → 每日/每週觸發 → 動作:啟動程式 `clean_mysql_temp.bat` → 勾選「使用最高權限運行」。

方法二:修改 MySQL 臨時目錄 (推薦)

將 `tmpdir` 指向專用磁碟 (非 C 盤),便於管理且不影響系統:

[mysqld]
tmpdir = D:/MySQL/tmp
# 確保目錄存在且 MySQL 服務帳號有讀寫權限
mkdir D:\MySQL\tmp
icacls D:\MySQL\tmp /grant "NT SERVICE\MySQL":(OI)(CI)F

重啟服務生效。此舉將臨時文件隔離,避免污染系統盤,且可單獨監控該目錄大小與文件數。

方法三:調整 `tmp_table_size` / `max_heap_table_size` 減少落盤

[mysqld]
tmp_table_size = 64M
max_heap_table_size = 64M
# 讓更多臨時表留在記憶體,減少 Temp 目錄寫入

排查檢查清單 (Error 1067 通用)

檢查項命令/位置常見問題
錯誤日誌`datadir\hostname.err`InnoDB 恢復失敗、權限表損壞、配置語法錯誤
配置檔語法`mysqld --help --verbose 2>&1 | findstr -i error`參數拼寫錯誤、路徑含特殊字符、編碼非 UTF-8
Port 佔用`netstat -ano | findstr 3306`殘留進程、多實例衝突
資料目錄權限`icacls datadir`服務帳號無讀寫權限
磁碟空間`wmic logicaldisk get size,freespace,caption`C 盤滿、Temp 目錄爆炸
依賴服務Services.msc依賴的服務未啟動

總結

Error 1067 多為環境層面問題而非 MySQL 核心 Bug。**C:\Windows\Temp 垃圾文件堆積是 Windows 部署 MySQL 的高發隱患**。根治核心:隔離 tmpdir 至專用盤 + 定時清理腳本 + 監控告警。遇到啟動失敗,先看錯誤日誌,再查環境資源,切勿盲目重裝。

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