2022年3月7日 星期一

關閉 MySQL的 binlog 避免硬碟塞爆

上周收到網站異常,

前往主機查詢發現硬碟空間佔滿,

導致系統運作不正常,

今天就來教大家怎麼解決

關閉 MySQL的 binlog 避免硬碟塞爆

由於 MySQL 的 binlog 預設為開啟,

導致長期下來 log 佔用太大的硬碟空間,

同時也是造成此次網站異常的元兇。

在此提供解決方案。

使用管理員帳號登入 mysql

mysql -uroot -p 

並執行

show binary logs;


可以看到一個檔案就有 20MB以上,

日積月累之下這些 log 檔案就會塞爆硬碟,

當然若主機的硬碟空間很大應該就不會有這種困擾,

但換作雲端的話,

這些 log 佔用的空間就是代表經費的增加。

先使用命令將多數的 log檔案刪除

purge binary logs to 'binlog.000150'

這命令會將 'binlog.000150'之前的 log檔案都刪除


接著再到 MySQL 設定檔案中略過 binlog

路徑通常為

/etc/mysql/mysql.conf.d/mysqld.cnf

新增一行 skip-log-bin 讓這個功能 off

[mysqld]
user            = mysql
skip-log-bin

重新啟動服務

sudo service mysql restart


回到 MySQL 使用

show variables like 'log_bin';

確認是否關閉

show variables like 'log_bin';


最後回到主機上執行

df -h

查詢目前空間佔用的情形


經過上面的步驟之後,

可用空間多出 1.3G ,

就不會再出現網站異常的訊息,

其他實用的命令如下:

find / -type f  -size +10000k -exec ls -lh {} \; | awk '{print $5 ": " $9}' | sort -nr | head -n 40

這個命令會找到資料夾內大於 10MB的前 40個檔案,

以上就是今天要分享的解決方案

關閉 MySQL的 binlog 避免硬碟塞爆







沒有留言: