欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MYSQL如何優(yōu)雅的刪除二進(jìn)制日志binlog

 更新時間:2025年05月07日 10:26:43   作者:血小濺  
MySQL 的二進(jìn)制日志(binlog)是用于記錄所有修改數(shù)據(jù)庫的操作的文件,因為它會占用大量磁盤空間,所以本文我們來聊聊如何優(yōu)雅的刪除二進(jìn)制日志binlog吧

摘要

MySQL 的二進(jìn)制日志(binlog)是用于記錄所有修改數(shù)據(jù)庫的操作的文件,包括增刪改等操作。這些操作記錄在二進(jìn)制日志中,可以用于數(shù)據(jù)恢復(fù)、數(shù)據(jù)同步等操作。但是,隨著時間的推移,二進(jìn)制日志文件會越來越多,占用大量磁盤空間。因此,需要定期清理二進(jìn)制日志文件。

注意:mysql的binlog日志不可以簡單粗暴的直接刪除,否則后果不堪設(shè)想?。?!

1、查看日志文件

通過命令查看binlog日志文件信息,通過數(shù)據(jù)庫UI工具或者服務(wù)器mysql控制臺執(zhí)行都行。以下兩個命令效果是一樣的。

命令1

 show master logs;

命令2

 show binary logs;

如下是在navicat中的效果,第一列是日志名稱,第二列是文件大小,mysql8.0中會多一列Encrpted。

2、刪除binlog

2.1、手動方式刪除

注意此處的手動刪除并不是rm -rf ,此種刪除方式是指通過命令方式刪除

方式1:刪除指定文件之前的日志,但不包括指定的日志

purge binary logs to 'mysql-bin.000068';

刪除后,我們可以看到mysql-bin.000067被刪除了,mysql-bin.000068還在。

方式2:刪除指定日期之前的日志

purge binary logs before '2021-08-22 18:00:00';

操作樣例:略

2.2、自動清除

除了手動方式清除外,msyql也提供了自動清除方案,mysql不同版本方式也有些許不同,具體如下:

2.2.1、Mysql 5.7

expire_logs_days 是 MySQL 中用于控制二進(jìn)制日志文件保留時間的參數(shù)。二進(jìn)制日志是 MySQL 中用于記錄所有修改數(shù)據(jù)庫的操作的文件,包括增刪改等操作。這些操作記錄在二進(jìn)制日志中,可以用于數(shù)據(jù)恢復(fù)、數(shù)據(jù)同步等操作。

expire_logs_days 參數(shù)用于控制二進(jìn)制日志文件的保留時間,如果一個二進(jìn)制日志文件的創(chuàng)建時間早于 expire_logs_days 天,則這個文件會被自動刪除。這個參數(shù)的默認(rèn)值是 0,表示不自動刪除二進(jìn)制日志文件。expire_logs_days 參數(shù)的設(shè)置范圍是 0 到 4294967295(2的32次方減1),單位是天。需要注意的是,如果將 expire_logs_days 參數(shù)設(shè)置為一個非常大的值,可能會導(dǎo)致磁盤空間不足。因此,在設(shè)置 expire_logs_days 參數(shù)時,需要根據(jù)實際情況進(jìn)行調(diào)整,確保磁盤空間充足,并且能夠滿足數(shù)據(jù)恢復(fù)、數(shù)據(jù)同步等操作的需求。另外,需要注意的是,expire_logs_days 參數(shù)只控制二進(jìn)制日志文件的保留時間,不會對已經(jīng)寫入的二進(jìn)制日志文件進(jìn)行刪除。如果需要刪除已經(jīng)寫入的二進(jìn)制日志文件,可以使用 PURGE BINARY LOGS 命令。

可以通過以下命令查看當(dāng)前 MySQL 實例中的 expire_logs_days 參數(shù)值:

SHOW VARIABLES LIKE 'expire_logs_days';

可以通過以下命令設(shè)置 expire_logs_days 參數(shù)的值:

SET GLOBAL expire_logs_days = 30;

這個命令將 expire_logs_days 參數(shù)的值設(shè)置為 30,表示保留 30 天內(nèi)的二進(jìn)制日志文件,超過 30天的文件會被自動刪除。

需要注意的是,如果設(shè)置了 expire_logs_days 參數(shù),但是沒有啟用二進(jìn)制日志,這個參數(shù)是沒有作用的。

設(shè)置之后不會立即清除,觸發(fā)條件是:

  • binlog大小超過max_binlog_size
  • 手動執(zhí)行flush logs
  • 重新啟動時(MySQL將會new一個新文件用于記錄binlog)

此處我們可以通過方式2進(jìn)行觸發(fā)

flush logs;

2.2.2、Mysql8.0版本

1.查看binlog的過期相關(guān)的全局變量

show variables like '%expire%';

2.參數(shù)說明

8.0版本的過期時間全局變量有binlog_expire_logs_seconds 和binlog_expire_logs_auto_purge,單位是秒管理時間粒度更小更符合實際應(yīng)用場景,同時還有expire_logs_days這個,但是準(zhǔn)備棄用了,在未來版本中會被移除。參數(shù)說明如下

binlog_expire_logs_secondsbinlog_expire_logs_auto_purge 是 MySQL 8.0 中用于控制二進(jìn)制日志文件保留時間的參數(shù)。

binlog_expire_logs_seconds 參數(shù)用于控制二進(jìn)制日志文件的保留時間,單位是秒。如果一個二進(jìn)制日志文件的創(chuàng)建時間早于 binlog_expire_logs_seconds 秒,則這個文件會被自動刪除。這個參數(shù)的默認(rèn)值是 2592000 秒(30 天),表示保留 30 天內(nèi)的二進(jìn)制日志文件,超過 30 天的文件會被自動刪除。

binlog_expire_logs_auto_purge 參數(shù)用于控制是否自動清除過期的二進(jìn)制日志文件。如果將這個參數(shù)設(shè)置為 ON,則 MySQL 會自動清除過期的二進(jìn)制日志文件。這個參數(shù)的默認(rèn)值是 ON。

可以通過以下命令查看當(dāng)前 MySQL 實例中的 binlog_expire_logs_secondsbinlog_expire_logs_auto_purge 參數(shù)值:

SHOW VARIABLES LIKE 'binlog_expire_logs_seconds';
SHOW VARIABLES LIKE 'binlog_expire_logs_auto_purge';

可以通過以下命令設(shè)置 binlog_expire_logs_secondsbinlog_expire_logs_auto_purge 參數(shù)的值:

SET GLOBAL binlog_expire_logs_seconds = 86400;
SET GLOBAL binlog_expire_logs_auto_purge = OFF;

這個命令將 binlog_expire_logs_seconds 參數(shù)的值設(shè)置為 86400 秒(1 天),表示保留 1 天內(nèi)的二進(jìn)制日志文件,超過 1 天的文件會被自動刪除。將 binlog_expire_logs_auto_purge 參數(shù)的值設(shè)置為 OFF,表示不自動清除過期的二進(jìn)制日志文件。

需要注意的是,二進(jìn)制日志文件的清除策略需要根據(jù)實際情況進(jìn)行調(diào)整,確保磁盤空間充足,并且能夠滿足數(shù)據(jù)恢復(fù)、數(shù)據(jù)同步等操作的需求。在清除二進(jìn)制日志文件時,需要確保不會影響正在寫入的二進(jìn)制日志文件,并且需要備份好重要的二進(jìn)制日志文件,以便進(jìn)行數(shù)據(jù)恢復(fù)、數(shù)據(jù)同步等操作。

參數(shù)名
binlog_expire_logs_secondsbinlog可以以秒為單位進(jìn)行清理,之前參數(shù)是按照expire_logs_days天為刪除,有時因1天當(dāng)中,可能會生成幾百G的binlog日志,導(dǎo)致空間不夠用,手動或腳本清理。現(xiàn)在不需要那麻煩。更貼合現(xiàn)狀的解決方案
expire_logs_days準(zhǔn)備棄用,在未來版本中會被移除
binlog_expire_logs_auto_purgebinlog用于控制日志自動清理機(jī)制,MySQL 8.0.29開始,可以通過將binlog_expire_logs_auto_purge系統(tǒng)變量設(shè)置為OFF來禁用binlog的自動清除。這優(yōu)先于binlog_expire_logs_seconds的任何設(shè)置

按照下面代碼注釋記錄:expire_logs_days準(zhǔn)備廢棄,binlog_expire_logs_auto_purge 和binlog_expire_logs_seconds 需要配合使用。

    3  Warning	1287	'@@expire_logs_days' is deprecated and will be removed 
    in a future release. Please use binlog_expire_logs_seconds instead.
 
 
# ASSERT: If binlog_expire_logs_auto_purge is set to ON, then the server
#         MUST purge automatically binary log files according to the
#         binlog_expire_logs_seconds setting.
#
 
#
# ASSERT: If binlog_expire_logs_auto_purge is set to ON and both
#         binlog_expire_logs_seconds and expire_logs_days are set to 0,
#         then binary log files SHALL NOT be automatically purged.
#

到此這篇關(guān)于MYSQL如何優(yōu)雅的刪除二進(jìn)制日志binlog的文章就介紹到這了,更多相關(guān)MYSQL刪除二進(jìn)制日志binlog內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論