sql

設定mysql binlog 保留時間,及相關的查詢、刪除

查詢自己是否有開啟binlog

在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 主從式架構設定教學

Be the First to comment.

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

(若看不到驗證碼,請重新整理網頁。)