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

二進制安裝 MySQL 5.5.39:磁碟空間不足導致啟動失敗的完整排查與擴容實戰

     編輯:MySQL 綜合教學

二進制安裝 MySQL 5.5.39:磁碟空間不足導致啟動失敗的完整排查與擴容實戰

線上環境因根分區 100% 滿載,導致 MySQL 初始化建立 ib_logfile2 失敗,服務無法啟動。本文完整記錄從錯誤日誌分析、磁碟擴容、重新初始化到驗證啟動的全過程,並補充 mysqld_safe 守護進程與舊版 mysqld 殘留導致參數衝突的避坑指南。

現象與錯誤日誌關鍵證據

InnoDB: Error: Write to file ./ib_logfile2 failed at offset 0 97517568.
InnoDB: 1048576 bytes should have been written, only 167936 were written.
InnoDB: Operating system error number 2.
InnoDB: Error number 2 means 'No such file or directory'.
InnoDB: Error in creating ./ib_logfile2: probably out of disk space

df -h 確認根分區 Use% 100%,無可用空間。

解決方案:新增磁碟並掛載至資料目錄

  1. 關機掛載新磁碟:虛擬機新增 5G 磁碟 /dev/sdb。
  2. 分區格式化:fdisk /dev/sdb → mkfs.ext3 /dev/sdb1。
  3. 遷移資料目錄:
    rm -rf /data          # 釋放舊空間
    mount /dev/sdb1 /data # 掛載新磁碟
    mkdir -p /data/mysql/mysql_3306/{data,logs,tmp}
    chown -R mysql:mysql /data/mysql
  4. 持久化掛載:修改 /etc/fstab 新增 /dev/sdb1 /data ext3 defaults 0 0。
  5. 重新初始化:./scripts/mysql_install_db --user=mysql --defaults-file=/etc/my.cnf(注意:必須先 chown 再初始化)。

啟動驗證三種方式

方式命令特點
serviceservice mysql start標準 SysV 初始化腳本
init.d/etc/init.d/mysql start同上,別名
mysqld_safemysqld_safe --defaults-file=/etc/my.cnf &推薦:守護進程,自動重啟崩潰的 mysqld

避坑:舊版 mysqld 殘留導致「unknown variable」

系統預裝 MySQL 5.0 的 /usr/libexec/mysqld 被 mysqld_safe 調用,不識別 5.5 參數(如 slow_query_log_file、long_query_time=0.5)。

修復:cp /usr/local/mysql/bin/mysqld /usr/libexec/mysqld 覆蓋舊二進制,再用 mysqld_safe 啟動即可。

驗證守護進程自動重啟

kill -9 
# 觀察 mysqld_safe 日誌:mysqld restarted
ps -ef | grep mysql  # 新 mysqld PID 出現,mysqld_safe PID 不變

確認 mysqld_safe 為真正的守護者,生產環境務必採用此方式啟動。

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