詳解:Mysql binlog 安全刪除實例

如果你的 Mysql 搭建了主從同步 , 或者數據庫開啟了 log-bin 日誌 , 那麼隨著時間的推移 , 你的數據庫 data 目錄下會產生大量的日誌文件

shell > ll /usr/local/mysql/data/ # 如下

-rw-rw----. 1 mysql mysql 63278 9月 11 02:03 mysql-bin.000001

-rw-rw----. 1 mysql mysql 1096670 9月 11 02:03 mysql-bin.000002

-rw-rw----. 1 mysql mysql 133 9月 11 02:04 mysql-bin.000003

-rw-rw----. 1 mysql mysql 133 9月 12 02:00 mysql-bin.000004

-rw-rw----. 1 mysql mysql 271 9月 12 18:25 mysql-bin.000005

-rw-rw----. 1 mysql mysql 133 9月 12 18:55 mysql-bin.000006

-rw-rw----. 1 mysql mysql 133 9月 12 19:48 mysql-bin.000007

-rw-rw----. 1 mysql mysql 133 9月 12 21:21 mysql-bin.000008

-rw-rw----. 1 mysql mysql 321 11月 18 17:30 mysql-bin.000009

由於我的是測試環境 , 所以文件還很小 , 生產環境中這些文件如果不做處理的話 , 甚至會撐爆你的磁盤

下面來介紹幾種解決方法:

~~> 如果你的數據庫沒有搭建主從同步這樣的服務 , binlog 日誌也不用的情況下 , 你可以將 /etc/my.cnf 文件下面行刪除或註釋掉

log-bin=mysql-bin

~~> 如果你需要這樣的文件 , 那麼建議你在主配置文件 /etc/my.cnf 中添加如下行 , 來限制 binlog 日誌文件存在時間 , 過期自動刪除

expire_logs_days = 7 # 只保留 7 天的日誌文件

~~> 如果你直接得到一臺服務器 , 上面的 binlog 日誌已經影響到了磁盤空間 , 那麼你將使用下面命令清除

mysql> reset master; # 清空所有 binlog 文件

如果你的得到的服務器 , mysql 還做了主從同步 , 那麼上面的命令就不適合你了 , 因為 binlog 文件刪除過多的話 , 會導致數據不同步

mysql> show slave status\G # 你首先要來 slave 上查看從庫讀 binlog 到了哪裡

Master_Log_File: mysql-bin.000009 # 我們可以看到是 mysql-bin.000009

mysql> purge master logs to 'mysql-bin.000009'; # 我們可以在 master 中執行這條指令 , 將 binlog 文件刪除至 mysql-bin.000009 前

mysql> purge master logs before '2014-11-18 00:00:00'; # 將 binlog 文件刪除至此日期前


分享到:


相關文章: