1. 程式人生 > >刪除mysql日誌文件

刪除mysql日誌文件

ike global osi exp binary 訪問 部分 問題 block

今天發現網站不能正常訪問,於是登陸服務器查找問題。 機智的我隨手用命令:df -l 發現 硬盤爆滿了,於是就知道 問題所在了。 Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvda1 20641404 16963004 16929876 100% / tmpfs 960368 0 960368 0% /dev/shm /dev/xvdb1 51599192 4845536 44132564 10% /home/sam/share 然後通過命令 du -sh * 一路檢查,發現mysql的日誌文件占據了大部 分空間 , 整整27G,於是現在的任務就是清理mysql的日誌文件 (主要是清理.log文件和mysql-bin.00000X二進制日誌文件)

一、刪除mysql日誌文件

第一步:登陸進入mysql,並使用 show binary logs; 查看日誌文件。

mysql> show binary logs;

+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 234592362 |
| mysql-bin.000002 | 425234342 |
| mysql-bin.000003 | 425345345 |
| mysql-bin.000004 | 234234222 |
| mysql-bin.000005 | 425994852 |

+------------------+-----------+

第二步:查看正在使用的日誌文件:show master status;
mysql> show master status;

+------------------+-----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+-----------+--------------+------------------+-------------------+

| mysql-bin.000005 | 425994852 | | | |
+------------------+-----------+--------------+------------------+-------------------+
row in set (0.00 sec)

    當前正在使用的日誌文件是mysql-bin.000005,那麽刪除日誌文件的時候應該排除掉該文件。
刪除日誌文件的命令:purge binary logs to ‘mysql-bin.000005’;
mysql> purge binary logs to ‘mysql-bin.000005‘;

刪除除mysql-bin.000005以外的日誌文件。
刪除後就能釋放大部分空間。

二、mysql 定時清理日誌文件

    如果每次等到發現空間不足的時候才去手動刪除日誌文件,
    這種方式是很不理想的。
那麽,我們就需要設置mysql,讓它能自動清理日誌文件。
編輯mysql的配置文件,設置expire_logs_days(mysql定時
刪除日誌文件)

[[email protected] ~]# vim /etc/my.cnf

在my.cnf中,添加或修改expire_logs_days的值 (這裏設置的自動
刪除時間為10天, 默認為0不自動刪除)
expire_logs_days=10
修改後,重啟mysql就會生效。
但是,在生產環境中,重啟mysql數據庫往往會付出很高的代價。
於是,可以在不重啟mysql的情況下,修改expire_logs_days值
登陸到mysql,並輸入一下命令。 如下:

mysql> show variables like ‘%log%‘;
mysql> set global expire_logs_days = 10;

    設置完後,可以通過 show variables like ‘%log%’; 
    看到expire_logs_days的值已被修改成10。
註意:通過這種方式設置expire_logs_days雖然不需要重啟mysql
即可生效,但是該方式在重啟mysql之後,值會被恢復。
於是,建議通過mysql命令設置expire_logs_days的同時,
也修改/etc/my.cnf下的expire_logs_days=10配置,這樣在
下次重啟mysql的時候,expire_logs_days也一樣是10;

刪除mysql日誌文件