MySQL bin-log 作用
1.數據恢復:如果你的數據庫出問題了,而你之前有過備份,那么可以看日志文件,找出是哪個命令導致你的數據庫出問題了,想辦法挽回損失。
2.主從服務器之間同步數據:主服務器上所有的操作都在記錄日志中,從服務器可以根據該日志來進行,以確保兩個同步。
3.在什么時間會刪除過期日志?
每次進行 LOG flush的時會自動刪除過期的日志,那么什么時間才能觸發log flush,手冊上的解釋為:
- 重啟 MySQL
- bin-log 文件大小達到參數 max_binlog_size 限制;
- 手工執行清理命令
自動清理方法1:(修改配置文件和在mysql內設置參數可無需重啟服務)
vim my.cnf
expire_logs_days = 7 // 表示日志保留7天,超過7天則設置為過期的
# mysql -u root -p > show binary logs; > show variables like '%log%'; > set global expire_logs_days = 7;
手動清理方法2:(推薦)
如果沒有主從復制,可以通過下面的命令重置數據庫日志,清除之前的日志文件:
reset master
但是如果存在復制關系,應當通過 PURGE 的名來清理 bin-log 日志,語法如下:
# mysql -u root -p
> purge master logs to 'mysql-bin.010’; //清除mysql-bin.010日志
> purge master logs before '2016-02-28 13:00:00'; //清除2016-02-28 13:00:00前的日志
> purge master logs before date_sub(now(), interval 3 day); //清除3天前的bin日志
注意,不要輕易手動去刪除binlog,會導致binlog.index和真實存在的binlog不匹配,而導致expire_logs_day失效