基本上大家裝mysql,都會開啟binlog功能,開啟這個功能的好處是,日後方便恢複資料,而壞處是記錄檔增長速度快,很快占會佔滿磁碟空間。
所以我們要定期或手工來刪除過大的記錄檔。
刪除記錄檔的方法大概有如下幾中:
一、設定日誌保留時間長度expire_logs_days自動刪除
- #查看當前日誌儲存天數:
-
- show variables like ‘%expire_logs_days%’;
-
- #這個預設是0,也就是logs不到期,可通過設定全域的參數,使他臨時生效:
-
- set global expire_logs_days=7;
-
- #設定了只保留7天BINLOG, 下次重啟mysql這個參數預設會失敗,所以需在my.cnf中設定
-
- expire_logs_days = 7
二、手動刪除BINLOG (purge binary logs)
- #用於刪除列於在指定的日誌或日期之前的日誌索引中的所有二進位日誌。這些日誌也會從屬記錄在日誌索引檔案
-
- PURGE {MASTER | BINARY} LOGS TO ‘log_name’
- PURGE {MASTER | BINARY} LOGS BEFORE ‘date’
-
- #例如:
-
- PURGE MASTER LOGS TO ‘mysql-bin.010′;
- PURGE MASTER LOGS BEFORE ‘2008-06-22 13:00:00′;
- PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);
-
其它:
- 查看當前記錄檔列表:show binary logs;
使用binlog日誌的目的是為了方便恢複資料,所以我們不光要會刪除,還要會用日誌來恢複資料。
使用binlog恢複資料:
使用mysqlbinlog命令恢複日誌
- mysqlbinlog -d test /root/mysql/mysql-bin.000001|mysql -uroot -ppassword
-
- ※附錄
-
- #1、關於mysqlbinlog在mysql 5.0上的使用方法,可以參考:官方資料
-
- #2、如果不知道log-bin存放的檔案位置,可以使用下面的命令查看:
-
- mysql -uroot -ppassword -e 'SHOW BINLOG EVENTS \G'
-
- #3、當只是需要恢複部分記錄的時候,你可以使用時間點或位置點來定位,例如:
-
- mysqlbinlog --start-date="2005-04-20 9:01:00" --stop-date="2005-04-20 10:00:01" /var/log/mysql/bin.123456|mysql -uroot -ppassword[code]
-
- #意思是恢複4月20日早上9點到10點這一段時間的資料。
-
- mysqlbinlog --start-position="368301" --stop-position="368312"/var/log/mysql/bin.123456| mysql -uroot -pmypwd
-
- #意思是重做368301到368312位置點之間的操作。位置點可以就是用mysqlbinlog看到的at xxx節點)
-
- mysqlbinlog --start-date="2005-04-20 9:55:00" --stop-date="2005-04-20 10:05:00" /var/log/mysql/bin.123456 > /tmp/mysql_restore.sql
-
- #同樣的,如果我們只是想查看某段時間的操作,直接把它導到一個檔案即可。
本文出自 “小崔的成長之路” 部落格,請務必保留此出處http://cyr520.blog.51cto.com/714067/957041