2008
10.14
10.14
其實我很久沒去動伺服器了,前幾天放假時心血來潮,下幾個指令看看硬碟的狀況,不看還好,一看吐血…
roga@Lab3:~$ df -h Filesystem Size Used Avail Use% Mounted on /dev/md0 229G 62G 168G 27% / tmpfs 507M 0 507M 0% /lib/init/rw udev 10M 44K 10M 1% /dev tmpfs 507M 0 507M 0% /dev/shm roga@Lab3:~$
我明明硬碟上什麼都沒放,怎麼會活生生被吃掉 62G 呢!?
用指令 root@Lab3:/# du -ckhs /* 一層一層慢慢查才發現原來 /var/log/mysql 裡面有一大堆 mysql-bin.0000XX ,原來這些都是 MySQL 的 Binary Log ,讓你在 MySQL 爛掉的時候可以用 Binary Log 救回來。由於我都直接 dump 每日備份,所以這個 Replay 用的 Binary Log 當然這就用不到啦!上網找了方法,只要在 my.cnf 裡面找到以下兩行設定:
expire_logs_days = 10
max_binlog_size = 100M
把 size 和保留天數調整一下就可以了。之後重新啟動 MySQL 即可見效,如果試了很多次 MySQL 都再起不能的話,直接把 /var/log/mysql 裡面的 binary 檔都移掉,這樣就可以正常重新啟動了。
注意:執行這個作法之前,請確定資料庫備份方案足夠完善,以免哪天 crash 沒有東西可以備份還原。

附註,如果把
註解掉的話,就可以停用 Binary Log 取而代之的是一般的 Log 而且會自動 rotate 。