在mysql資料庫,如果資料庫安裝的時候,有啟用了log-bin選項,那麼,所有對於資料庫的修改都會記錄在binary log中,binary log可以用於資料庫的復原(基於時間點的復原)
你可以透過指令 show variables like ‘log_bin’; 查詢看看你是否有開啟
我們可以透過指令 show variables like ‘log_%’; 查看binlog的各項資訊,如下圖所示 可以看到binlog都放在linux下的/var/lib/mysql,你可以在這個位置下找到很多binlog檔案
我們可以透過指令show binary logs看到你的mysql裡面有多少的binlog以及他各自檔案是多大
如果你想要修改binlog的保存天數的話,可以用
mysql> set global binlog_expire_logs_seconds =2591000;
mysql> flush logs;
上面的單位是秒或是你想以天為單位來計算的話就改成
mysql> set global expire_logs_days = 7; #設定7天過期
mysql> flush logs;
flush logs指令的作用就是關閉目前使用的binary log,然後開啟一個新的binary log文件,文件的序號加1.
這邊值得要注意的是,請確定你的mysql伺服器是否有主從架構的備援(master slave),由於 MySQL 在 Replication 模式下 Master 產生的 Binlog 是 Slave 同步的重要檔案(預設名 mysql-bin.000XXX)。如果因為這些檔案太大導致空間不夠用需要縮減,那要非常小心的操作,絕對不能冒然自己隨意刪除。
https://promacanthus.netlify.app/experience/mysql/03-binlog/
[MySQL] Replication 模式下,Master 主機清除過多 Binlog 的作法
MySQL Master Slave Replication 主從式架構設定教學