最近幾個月服務器總是頻繁當機,導致比爾蓋子的可用性得不到保證。但說也奇怪,當機的時候,服務器可以正常連接,Nginx也看似正常,但就是PHP-FPM失去響應。後來無意中df -h一下,發現:
rootfs 7.7G 7.7G 0 100% /
根目錄滿了!便認為是日志太多,清理了下日志。但基本每個一個星期日志就會滿。弄得比爾蓋子不得安寧。後來就把/var獨立分區了,但依然不奏效,有多少占多少。也清理過/var/tmp和/var/cache,但效果依然有限。
今天,耐著性子du -ah,發現/var/lib/mysql占用空間異常,cd到這裡ls -lh後發現:
-rw-rw---- 1 mysql mysql 5242880 Feb 27 14:49 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 Dec 27 17:55 ib_logfile1
-rw-rw---- 1 mysql mysql 588M Mar 12 02:03 maria_log.00000003
-rw-rw---- 1 mysql mysql 52 Mar 12 01:54 maria_log_control
drwx------ 2 mysql root 4.0K Jan 15 14:28 mysql
-rw-rw---- 1 mysql mysql 20K Dec 27 17:54 mysqld-bin.000001
-rw-rw---- 1 mysql mysql 715K Dec 27 17:54 mysqld-bin.000002
-rw-rw---- 1 mysql mysql 625 Dec 28 11:46 mysqld-bin.000003
-rw-rw---- 1 mysql mysql 125 Dec 27 18:20 mysqld-bin.000004
-rw-rw---- 1 mysql mysql 125 Dec 27 18:20 mysqld-bin.000005
-rw-rw---- 1 mysql mysql 125 Dec 27 18:21 mysqld-bin.000006
-rw-rw---- 1 mysql mysql 125 Dec 27 18:21 mysqld-bin.000007
-rw-rw---- 1 mysql mysql 125 Dec 27 18:22 mysqld-bin.000008
-rw-rw---- 1 mysql mysql 125 Dec 27 18:22 mysqld-bin.000009
-rw-rw---- 1 mysql mysql 20K Dec 27 18:22 mysqld-bin.000010
-rw-rw---- 1 mysql mysql 715K Dec 27 18:22 mysqld-bin.000011
-rw-rw---- 1 mysql mysql 125 Dec 27 18:24 mysqld-bin.000012
-rw-rw---- 1 mysql mysql 125 Dec 27 18:25 mysqld-bin.000013
-rw-rw---- 1 mysql mysql 125 Dec 27 18:27 mysqld-bin.000014
-rw-rw---- 1 mysql mysql 125 Dec 28 09:55 mysqld-bin.000015
-rw-rw---- 1 mysql mysql 125 Dec 28 11:41 mysqld-bin.000016
-rw-rw---- 1 mysql mysql 125 Dec 28 11:42 mysqld-bin.000017
-rw-rw---- 1 mysql mysql 125 Dec 28 12:07 mysqld-bin.000018
-rw-rw---- 1 mysql mysql 1.4K Dec 28 12:49 mysqld-bin.000019
-rw-rw---- 1 mysql mysql 125 Dec 28 16:31 mysqld-bin.000020
-rw-rw---- 1 mysql mysql 107M Dec 28 18:30 mysqld-bin.000021
-rw-rw---- 1 mysql mysql 1.2M Dec 30 09:22 mysqld-bin.000022
-rw-rw---- 1 mysql mysql 125 Dec 30 09:26 mysqld-bin.000023
-rw-rw---- 1 mysql mysql 3.8K Dec 30 12:29 mysqld-bin.000024
-rw-rw---- 1 mysql mysql 59M Jan 11 21:34 mysqld-bin.000025
-rw-rw---- 1 mysql mysql 10M Jan 14 15:16 mysqld-bin.000026
-rw-rw---- 1 mysql mysql 186K Jan 15 05:16 mysqld-bin.000027
-rw-rw---- 1 mysql mysql 21K Jan 15 14:46 mysqld-bin.000028
-rw-rw---- 1 mysql mysql 13K Jan 15 15:12 mysqld-bin.000029
-rw-rw---- 1 mysql mysql 62M Jan 17 16:36 mysqld-bin.000030
-rw-rw---- 1 mysql mysql 63M Jan 18 17:10 mysqld-bin.000031
-rw-rw---- 1 mysql mysql 125 Jan 18 17:16 mysqld-bin.000032
-rw-rw---- 1 mysql mysql 21K Jan 18 17:23 mysqld-bin.000033
-rw-rw---- 1 mysql mysql 118M Jan 22 12:41 mysqld-bin.000034
-rw-rw---- 1 mysql mysql 209K Jan 22 12:59 mysqld-bin.000035
-rw-rw---- 1 mysql mysql 117M Jan 28 11:59 mysqld-bin.000036
-rw-rw---- 1 mysql mysql 125 Jan 28 13:46 mysqld-bin.000037
-rw-rw---- 1 mysql mysql 24M Jan 28 16:01 mysqld-bin.000038
-rw-rw---- 1 mysql mysql 460K Jan 28 16:10 mysqld-bin.000039
-rw-rw---- 1 mysql mysql 7.0M Jan 28 16:52 mysqld-bin.000040
-rw-rw---- 1 mysql mysql 2.3M Jan 28 17:12 mysqld-bin.000041
-rw-rw---- 1 mysql mysql 2.1M Jan 28 17:27 mysqld-bin.000042
-rw-rw---- 1 mysql mysql 173K Jan 28 17:37 mysqld-bin.000043
-rw-rw---- 1 mysql mysql 378K Jan 28 17:44 mysqld-bin.000044
-rw-rw---- 1 mysql mysql 79K Jan 28 17:50 mysqld-bin.000045
-rw-rw---- 1 mysql mysql 272K Jan 28 18:12 mysqld-bin.000046
-rw-rw---- 1 mysql mysql 156K Jan 28 18:15 mysqld-bin.000047
-rw-rw---- 1 mysql mysql 962K Jan 28 18:33 mysqld-bin.000048
-rw-rw---- 1 mysql mysql 43K Jan 28 18:40 mysqld-bin.000049
-rw-rw---- 1 mysql mysql 28M Jan 29 11:43 mysqld-bin.000050
-rw-rw---- 1 mysql mysql 125 Jan 29 11:46 mysqld-bin.000051
-rw-rw---- 1 mysql mysql 139K Jan 29 12:37 mysqld-bin.000052
-rw-rw---- 1 mysql mysql 135K Jan 29 12:44 mysqld-bin.000053
-rw-rw---- 1 mysql mysql 409M Feb 9 23:18 mysqld-bin.000054
-rw-rw---- 1 mysql mysql 482M Feb 17 09:37 mysqld-bin.000055
-rw-rw---- 1 mysql mysql 542M Feb 27 12:30 mysqld-bin.000056
-rw-rw---- 1 mysql mysql 125 Feb 27 12:31 mysqld-bin.000057
-rw-rw---- 1 mysql mysql 125 Feb 27 14:48 mysqld-bin.000058
-rw-rw---- 1 mysql mysql 854M Mar 13 12:08 mysqld-bin.000059
-rw-rw---- 1 mysql mysql 1.1K Feb 27 14:49 mysqld-bin.index
上帝老天爺,這些log和bin都是什麼玩意兒?!最後找到資料:
mysql-bin.000001、mysql-bin.000002等文件是數據庫的操作日志,例如UPDATE一個表,或者DELETE一些數據,即使該語句沒有匹配的數據,這個命令也會存儲到日志文件中,還包括每個語句執行的時間,也會記錄進去的。這主要是用於操作審查和多數據庫同步的。ib_logfile則是用來記錄InnoDB的表一致性的,只有在當機後才能發揮作用。maria_log.00000003則是比爾蓋子使用的MariaDB特有的文件,作用也差不多。
但是對比爾蓋子來說,沒有主從數據庫,也不用審查操作,這些文件完全沒有任何用處!因此,首先清理一下這些文件。然後編輯mysql配置文件,組織其再記錄這些日志,鏟草除根。Gentoo的MySQL日志在/etc/mysql/my.cnf。把裡面的log-bin這一行注釋掉。
然後重啟MySQL服務器,問題搞定!可用空間瞬間增加數GB!
作者 biergaizi2009