MySQL bin-log 作用
阿新 • • 發佈:2018-11-05
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失效