Mysql

更新 expire_logs_days 參數並重新啟動 sql 後多久會刪除舊的 binlog?

  • December 22, 2012

MySQL 5.1.x | 數據庫 | 視窗

我的 mysql 數據目錄開始填滿 bin 日誌。

我目前在我的 Windows mysql 伺服器中配置了以下設置:

[mysqld]
log-bin
server-id=1
binlog-do-db=foodb1
binlog-do-db=foodb2
expire_logs_days=25

我打算將 expire_logs_days 設置更改為expire_logs_days=10並退回 mysql 服務。進行此更改後,我可以預期舊的 bin 日誌多久會被清除。

這僅作為夜間計劃任務的一部分完成嗎?或者這應該是立即的?

它將在 mysql 啟動時立即處理。

您不必等待 mysql 重新啟動。

首先,expire_logs_days在 /etc/my.cnf 中設置為 10

[mysqld]
log-bin
server-id=1
binlog-do-db=foodb1
binlog-do-db=foodb2
expire_logs_days=10

接下來,登錄到mysql並執行這個

PURGE BINARY LOGS BEFORE (date(now()) + interval 0 second - interval 10 day);

記下查詢的日期和時間

mysql> select date(now()) + interval 0 second - interval 10 day;
+---------------------------------------------------+
| date(now()) + interval 0 second - interval 10 day |
+---------------------------------------------------+
| 2012-12-11 00:00:00                               |
+---------------------------------------------------+
1 row in set (0.00 sec)

mysql>

因此,PURGE BINARY LOGS命令將刪除所有日期時間戳早於2012-12-11 00:00:00.

最後,執行這個命令

SET GLOBAL expire_logs_days = 10;

而已。安裝expire_logs_days不需要重新啟動。

至於複製參數,是需要重啟。

引用自:https://dba.stackexchange.com/questions/30930