linux之mysql啟動問題

來源:互聯網
上載者:User

標籤:

網站總是掛掉,查看到原來是mysql總是莫名其妙的掛掉

 

1.查看mysql日誌的位置

mysql> show VARIABLES like ‘%log%‘;+-----------------------------------------+-------------------------------------                                                                                                             ----------+| Variable_name                           | Value                                                                                                                                                      |+-----------------------------------------+-------------------------------------                                                                                                                                                                                                                      || log_error                               | /var/log/mysqld.log                                                                                                                                        || log_output                              | FILE                                                                                                                                                       |                                                                                                                        |+-----------------------------------------+-------------------------------------                                                                                                             ----------+41 rows in set (0.05 sec)

可得知mysql記錄檔位於/var/log/mysqld.log

 

2.使用vim /var/log/mysqld.log 查看錯誤記錄檔最後面發現如下內容

150401 15:10:17 [ERROR] /usr/local/mysql/bin/mysqld: Disk is full writing ‘./erqilu_87/pw_log_userdefend.MYD‘ (Errcode: 28). Waiting for someone to free space... (Expect up to 60 secs delay for server to continue after freeing disk space)

 

原來是磁碟空間滿了

 

3.查看磁碟空間

[[email protected] ~]# df -hFilesystem            Size  Used Avail Use% Mounted on/dev/xvda1             20G   20G  12M  100% /tmpfs                 498M     0  498M   0% /dev/shm/dev/xvdb1             69G   21G   45G  32% /home

原來真的是爆滿啊。。。。

 

4.查看具體那些檔案佔用了磁碟空間

[[email protected] ~]# du -h --max-depth=1 /4.1G    /var4.1G    /root97M     /lib156M    /tmp21G     /home11M     /sbin0       /opt6.2M    /bin6.5G    /usr30G     /

 

du 命令補習班{  du -h --max-depth=1 /    這句話的意思是列舉出(du)“/”目錄下深度為一個檔案夾(--max-depth=1)的檔案夾的大小並且以人能夠看懂的方式表現(-h)也就是M,G,KB什麼的      }

 

可以看到home檔案夾最大,不過這個檔案夾在第2步的時候已經知道了不是和mysql的檔案掛在在同一個磁碟的

其次就是/usr檔案夾還有/var檔案夾

 

5.解決/usr檔案夾的容量問題

依然使用du命令查看/usr檔案夾

發現原來是/usr/local/nginx/logs檔案夾中的nginx的記錄檔太大了而且還有以前用vim開啟的時候因為沒有正確關閉而導致的swp檔案,整個/usr/nginx/logs檔案夾整整有6.4G

首先刪除所有的swp檔案和swo檔案,一下子就清爽了許多

然後想著要週期性刪除以下log檔案,涉及到的知識有logrotate日誌管理工具(參見我的另一篇日誌)

開啟/etc/logrotate.d/檔案夾建立一個sample檔案寫入以下內容

        /usr/local/nginx/logs/erqilu.access.log{                olddir /usr/local/nginx/logs/oldErqiluAccessLogs                                    //指定舊檔案的隱藏檔夾                weekly                                                                                //指定每周執行一次                dateext                                                                                //指定轉存後的檔案以檔案名稱+日期來命名                rotate 8                                                                            //指定儲存八個轉存的檔案                create 0644 root utmp                                                                //指定轉存後建立新的檔案許可權和原來一樣                sharedscripts                                                                                       prerotate                                                                             //執行前的動作的開始標誌                /usr/bin/chattr -a /usr/local/nginx/logs/erqilu.access.log                            //將/usr/local/nginx/logs/erqilu.access.log變成不可追加字串                endscript                                                                            //執行前的動作的結束標誌                postrotate                                                                            //執行後的動作的開始標誌                /usr/bin/chattr +a /usr/local/nginx/logs/erqilu.access.log                          //將/usr/local/nginx/logs/erqilu.access.log 變成可以追加字元                /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/bull || true   //重新啟動syslog進程 syslogd.pid中儲存的是開啟syslogd進程的時候分配的進程號                /bin/kill -HUP `cat /usr/local/nginx/logs/nginx.pid `                           //重新啟動nginx(nginx.pid檔案中儲存的是開啟nginx服務的時候的進程號)                endscript                                                                           //執行後動作的結束標誌            }

 

然後使用命令:logrotate -f /etc/logrotate.d/sample 強制這個檔案執行,

然後就會發現在 olddir /usr/local/nginx/logs/oldErqiluAccessLogs 多了一個erqilu.access.log-20150403而原來的那個檔案也已經清空了,

在查看erqilu.access.log-20150403沒有發現有什麼問題之後,就將erqilu.access.log-20150403刪除或者多執行幾次:logrotate -f /etc/logrotate.d/sample

刪除大檔案之後,如果我們的配置正確的話,會每周都執行一次並且最大會儲存八個曆史檔案,如果超出了八個就將最古老的那個檔案刪除

 

6.解決/var檔案夾容量的問題

依然使用du命令發現佔用空間最大的是/var/lib/mysql檔案夾

開啟一看不知道神馬時候被人插入的資料庫,使用phpmyadmin工具查看全是賣…………@#¥%……&*的

直接使用phpmyadmin將這個資料庫刪了,並且最佳化了一下資料庫。

在這個檔案夾中還有一個ibdata1檔案,有幾百M,經過查詢時innodb類型的資料庫產生的結構檔案,並且如果資料庫改動的話,這個檔案並不會縮小,只會慢慢變大

還有兩個幾十M的檔案ib_logfile0、ib_logfile1,經過查詢,這些檔案是myisam結構的資料庫產生的結構檔案

解決的辦法如下

  • 停止mysql的運行,
  • 將伺服器上的所有Database Backup(推薦使用phpmyadmin,教程可以看我的另一篇日誌)
  • 將伺服器上面的所有資料庫刪除
  • 將ibdata1、ib_logfile0、ib_logfile1全部刪除,
  • 恢複原來備份的整個伺服器的資料庫

//蛋疼的是這樣做太費事兒了,而且只是能將ibdata1這個檔案縮小,得不償失,放棄這個目標

 

經過這些步驟之後再次查看磁碟佔用

[[email protected] ~]# df -hFilesystem            Size  Used Avail Use% Mounted on/dev/xvda1             20G   13G  6.6G  67% /tmpfs                 498M     0  498M   0% /dev/shm/dev/xvdb1             69G   21G   45G  32% /home

 

世界終於清靜了

 

linux之mysql啟動問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.