Mysql

由於磁碟已滿,mysqld 不再啟動

  • November 6, 2016

如何清理日誌或查找最大的文件並減少空間?還有我不明白 1.7T 連這個關鍵時刻都用不上。

mysqld 沒有執行,因為使用了 99%。

# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           20G   19G  279M  99% /
/dev/root        20G   19G  279M  99% /
devtmpfs         32G  268K   32G   1% /dev
/dev/md3        1.8T  196M  1.7T   1% /home
tmpfs            32G     0   32G   0% /dev/shm
/dev/root        20G   19G  279M  99% /var/named/chroot/etc/named
/dev/root        20G   19G  279M  99% /var/named/chroot/var/named
/dev/root        20G   19G  279M  99% /var/named/chroot/etc/named.conf
/dev/root        20G   19G  279M  99% /var/named/chroot/etc/named.rfc1912.zones
/dev/root        20G   19G  279M  99% /var/named/chroot/etc/rndc.key
/dev/root        20G   19G  279M  99% /var/named/chroot/usr/lib64/bind
/dev/root        20G   19G  279M  99% /var/named/chroot/etc/named.iscdlv.key
/dev/root        20G   19G  279M  99% /var/named/chroot/etc/named.root.key

MySQL 數據儲存在/var/lib. 中沒有更多空間/var。MySQL 沒有啟動。其實很簡單。看看/var/log並清理它。我會推薦類似的東西(刪除所有gz文件/var/log):

$ find /var/log -iname "*.gz" -delete

當然,您可能想先檢查要刪除的內容:

$ find /var/log -iname "*.gz"

1.7TB 分配給/home. 然而/var不是/home。所以/home沒有被使用。也很簡單。

當您設置系統時,您顯然應該/var在更大的分區上分開。現在,我能遇到的最佳解決方案是將 MySQL 數據目錄移動到更大的分區(/home):

$ mv /var/lib/mysql /home
$ ln -s /home/mysql /var/lib/mysql

如果您不想使用連結,則應重新配置 MySQL 以使用儲存在/home. 編輯/etc/mysql/my.cnf並更改此:

datadir = /var/lib/mysql

對此:

datadir = /home/mysql

現在 MySQL 有可用空間,它應該可以毫無問題地啟動。但是,如果您託管如此重要的數據庫,您應該重新考慮您的分區方案。

您可能還想調查日誌的內容,因為如果一切順利,應用程序不應該向它們寫入太多內容。有些東西可能在某處難以正常工作。

引用自:https://unix.stackexchange.com/questions/160198