mysql的binlog日志介紹
Binlog是mysql以二進制形式打印的日志,它默認不加密,不壓縮。binlog二進制日志包含了所有更新了數據或者已經潛在更新了數據(例如,沒有匹配任何行的一個DELETE)的所有語句。語句以“事件”的形式保存,它描述數據更改文件位置和格式:當用--log-bin[=file_name]選項啟動時,mysqld寫入包含所有更新數據的SQL命令的日志文件。如果未給出file_name值, 默認名為-bin后面所跟的主機名。如果給出了文件名,但沒有包含路徑,則文件被寫入數據目錄。
查看binlog 日志文件
mysql> show binary logs;
刪除mysql的binlog日志有兩種方法:自動刪除和手動刪除
1.自動刪除
永久生效:修改mysql的配置文件my.cnf,添加binlog過期時間的配置項:expire_logs_days=30,然后重啟mysql,這個有個致命的缺點就是需要重啟mysql。
臨時生效:進入mysql,用以下命令設置全局的參數:set global expire_logs_days=30;
(上面的數字30是保留30天的意思。)
2.手動刪除
可以直接刪除binlog文件,但是可以通過mysql提供的工具來刪除更安全,因為purge會更新mysql-bin.index中的條目,而直接刪除的話,mysql-bin.index文件不會更新。mysql-bin.index的作用是加快查找binlog文件的速度。
(1)直接刪除
找到binlog所在目錄,用rm binglog名 直接刪除
例:rm mysql-bin.010
(2)通過mysql提供的工具來刪除
刪除之前可以先看一下purge的用法:help purge;
刪除舉例:
RESET MASTER; -- 刪除所有binlog日志,新日志編號從頭開始
PURGE MASTER LOGS TO 'mysql-bin.010'; -- 刪除 mysql-bin.010 之前的所有日志
PURGE MASTER LOGS BEFORE '2020-04-14 22:46:26'; -- 刪除2020-04-14 22:46:26之前產生的所有日志
PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY); -- 清除3天前的 binlog