Mysql

如何以小時為單位設置 MySQL binlog 保留時間?

  • August 22, 2020

我的情況是 MySQL 日誌分區不到一天就被填滿了。我無法禁用二進制日誌,因為我需要它們進行複制。

我知道我可以設置日誌保留但接受天數,搜尋只顯示了這個https://serverfault.com/questions/179165/can-expire-logs-days-be-less-than-1-day-in -mysql問題,建議您自己通過腳本編寫。

由於這個問題已經有將近 8 年的歷史了,我想知道現在是否有可能。

如果重要的話,我正在使用 Percona MySQL 5.7

事實上,你現在可以。自 MySQL 8.0.1 以來,雖然expire_log_days仍然有效,但設置過期的規範方法是更改binlog_expire_logs_seconds​​ ,正如您可能猜到的那樣,它具有第二個解決方案。自 8.0.11 以來的預設值是 2592000(= 30 天),但可以像往常一樣在配置文件中配置為以秒為單位的任何其他時間段。

如果您還不能使用 MySQL 8.0,解決此問題的方法是使用PURGE BINARY LOGS語法, with BEFORE( PURGE BINARY LOGS BEFORE now() - INTERVAL 1 HOUR;’ 並將 設置max-binlog_size為適當的值(您不能刪除目前正在編寫的 binlog,儘管您始終可以使用 強制輪換FLUSH BINARY LOGS)。您可以在 cron/programmed 任務上設置一個事件來定期或在外部執行此操作。

或者,MySQL 的分支,如 Percona,過去(現在仍然)允許設置最大二進制日誌大小(以字節為單位) - 通過組合max_binlog_sizemax_binlog_files-,除了天數限制。

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