1. 程式人生 > >由於空間不足導致Mysql無法啟動

由於空間不足導致Mysql無法啟動

        昨天又遇到了mysql資料庫無法重啟的問題,還以為是上次許可權的原因,看了下mysql的錯誤日誌:

111202 10:05:57 mysqld restarted
111202 10:05:57 [ERROR] /usr/local/mysql5/libexec/mysqld: Error writing file '/usr/local/mysql5_database/sqwl-dev.pid' (Errcode: 28)
111202 10:05:57 [ERROR] Can't start server: can't create PID file: No space left on device

是磁碟空間不足導致的,檢視下磁碟空間佔用情況

[root@sqwl-dev /]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sda6 2.0G 432M 1.5G 23% /
/dev/sda7 21G 868M 19G 5% /home
/dev/sda5 3.9G 3.8G 0 100% /usr
/dev/sda3 3.9G 119M 3.6G 4% /var
/dev/sda1 99M 12M 82M 13% /boot
tmpfs 1006M 0 1006M 0% /dev/shm

發現/usr下已經沒有空間了,我把apache下的access_log和error_log刪除了,還有mysql-database下面的sqwl-dev.err也刪除了,然後重新啟動了linux,mysql正常啟動,此時再df一下,usr的可用空間有14M了,也所剩無幾了。看來還得找找大的檔案

在/usr下用find -size +100000000c的命令查詢下大於100M的檔案,木有。。。再查下大於30M的檔案,一堆,都是我備份的程式檔案擠佔了不少的地方,把這些備份檔案都挪走了後,發現可用空間已經提高到了79%,悔當初真不應該都放在/usr下面啊,僅僅有4G的空間,好窄。。。

在解決這個問題的時候我在社群中還專門發了一個帖子,我覺得的方法值得一試,他是這樣說的 :

1. 如果沒有使用獨立空間,則需要做匯出匯入操作進行空間釋放
2. sad5空間太小啦,你是自己測試用的庫嗎?不是的話,建議換到大點的盤上
3. 更換操作有兩個選擇:
  3.1 目錄轉移,同時mysql配置檔案也修改指向新目錄
  3.2 目錄轉移,在原位置做一個軟連結,這樣就不需要更改其它的配置資訊

現在先吃飯,吃完飯再來試試軟連線的方法

吃完飯,又弄了下linux的定時檔案,使得不需要的Log在每月的1號和15號清空

在root/scripts下建立了一個檔案delete_log.sh檔案,檔案內容是

#!/bin/sh
#this file delete apache log and mysql log
rm /usr/local/apache/logs/access_log
rm /usr/local/apache/logs/error_log
touch /usr/local/apache/logs/access_log
touch /usr/local/apache/logs/error_log
查了下第一行中 符號#!用來告訴系統它後面的引數是用來執行該檔案的程式。

然後建立一個定時檔案

 crontab -e

編輯這個檔案05 16 * * * /root/scripts/delete_log.sh測試了下,可以通過:)

下面補充下crontab的知識

基本格式 :
*  *  *  *  *  command
分 時  日   月  周   命令

第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要執行的命令