最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL?8.x中Binlog核心操作教學:查看、切換、清理

 更新時間:2026年04月27日 08:40:52   作者:君九@DBA  
本文將基于?MySQL?8.0.17?版本,結(jié)合實際環(huán)境實測結(jié)果,全程實操講解?Binlog?的開啟狀態(tài)查看、存儲路徑定位、手動切換切割、安全清理,以及自動過期清理的參數(shù)配置,希望對大家有所幫助

Binlog(二進制日志)是 MySQL 核心日志組件,主要用于記錄數(shù)據(jù)庫所有 DDL(表結(jié)構(gòu)變更)、DML(增刪改)操作,是數(shù)據(jù)誤恢復(fù)、操作審計、主從同步的核心依賴。

本文基于 MySQL 8.0.17 版本,結(jié)合實際環(huán)境實測結(jié)果,全程實操講解 Binlog 的開啟狀態(tài)查看、存儲路徑定位、手動切換切割、安全清理,以及自動過期清理的參數(shù)配置。

一、環(huán)境說明(實測環(huán)境)

本次實操基于 MySQL 8.0.17 版本:

mysql> show variables like '%expire%';
+--------------------------------+---------+
| Variable_name                  | Value   |
+--------------------------------+---------+
| binlog_expire_logs_seconds     | 2592000 |
| disconnect_on_expired_password | ON      |
| expire_logs_days               | 0       |
+--------------------------------+---------+
3 rows in set (0.01 sec)
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.17    |
+-----------+
1 row in set (0.00 sec)

二、Binlog 基礎(chǔ)信息查看

日常運維中,首先需要掌握 Binlog 的開啟狀態(tài)、存儲位置、命名規(guī)則,才能進行后續(xù)切換、清理操作,以下命令均為 MySQL 內(nèi)部執(zhí)行。

2.1 查看 Binlog 開啟狀態(tài)

MySQL 8.0 及以上版本默認開啟 Binlog,可通過以下命令驗證:

-- 查看 Binlog 開關(guān)狀態(tài)
SHOW VARIABLES LIKE 'log_bin';

輸出說明:

  • Value 為 ON:Binlog 已開啟(默認狀態(tài));
  • Value 為 OFF:未開啟,需修改配置文件添加 log_bin=ON,重啟 MySQL 生效。

2.2 查看 Binlog 存儲路徑與命名規(guī)則

Binlog 的存儲路徑和命名前綴,決定了日志文件的位置和命名格式,核心命令如下:

-- 查看 Binlog 存儲路徑 + 文件前綴(最關(guān)鍵)
SHOW VARIABLES LIKE 'log_bin_basename';

-- 查看 Binlog 索引文件路徑(記錄所有 Binlog 文件名)
SHOW VARIABLES LIKE 'log_bin_index';

關(guān)鍵說明:

存儲路徑:默認跟隨 MySQL 數(shù)據(jù)目錄(如示例中的 /var/lib/mysql/);

命名規(guī)則:以 log_bin_basename 的值為前綴,后綴為 6 位自增序號,例如 binlog.000001、binlog.000002,序號依次累加。

2.3 查看所有 Binlog 文件 & 當前活躍日志

查看服務(wù)器上所有 Binlog 文件,以及當前正在寫入的 Binlog(活躍日志),方便后續(xù)清理、切換操作:

-- 列出所有 Binlog 文件(含文件大小、是否加密)
SHOW BINARY LOGS;  -- 等價于 SHOW MASTER LOGS;

-- 查看當前正在寫入的 Binlog 文件及寫入位置
SHOW MASTER STATUS;

實測環(huán)境輸出示例(參考):

2.4 查看 Binlog 日志格式

Binlog 有三種日志格式,生產(chǎn)環(huán)境優(yōu)先推薦行級模式,確保數(shù)據(jù)恢復(fù)、主從同步的安全性:

SHOW VARIABLES LIKE 'binlog_format';

輸出說明:

  • ROW:行級模式(生產(chǎn)推薦),記錄每一行數(shù)據(jù)的變更,避免語句級模式的同步異常;
  • STATEMENT:語句級模式,記錄執(zhí)行的 SQL 語句,可能存在同步不一致問題;
  • MIXED:混合模式,自動切換行級和語句級,生產(chǎn)不推薦。

實測環(huán)境輸出示例(僅參考):

mysql> show variables like 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.01 sec)

mysql> 

三、Binlog 手動切換(日志切割)

在數(shù)據(jù)庫備份、版本變更、故障排查前,建議手動切換 Binlog,生成新的日志文件,拆分操作區(qū)間,便于后續(xù)精準定位日志、恢復(fù)數(shù)據(jù),避免單一日志文件過大。

3.1 應(yīng)用場景

數(shù)據(jù)庫全量備份前,切換 Binlog,確保備份后的數(shù)據(jù)變更寫入新日志,便于后續(xù)增量恢復(fù);

運維操作(如建表、批量更新)前,切換 Binlog,若操作出錯,可精準刪除該操作對應(yīng)的日志片段;

單一 Binlog 文件過大(接近默認 1G 閾值),手動切割,便于日志傳輸和分析。

3.2 手動切換命令(MySQL 內(nèi)部執(zhí)行)

-- 方式1:刷新所有日志(含 Binlog、錯誤日志、慢查詢?nèi)罩荆?
FLUSH LOGS;

-- 方式2:僅切換 Binlog(推薦,精準控制,不影響其他日志)
FLUSH BINARY LOGS;

3.3 切換生效驗證

執(zhí)行切換命令后,通過以下命令驗證是否生效:

SHOW MASTER STATUS;

生效表現(xiàn):當前正在寫入的 Binlog 文件名序號 +1(例如從 binlog.000003 變?yōu)?binlog.000004),后續(xù)所有數(shù)據(jù)變更均寫入新日志文件。

3.4 自動切換觸發(fā)條件

無需人工干預(yù),滿足以下條件時,MySQL 會自動切換 Binlog:

  • 當前 Binlog 文件達到 max_binlog_size 閾值(默認 1G);
  • MySQL 服務(wù)重啟(包括正常重啟、異常重啟后恢復(fù));
  • 執(zhí)行 FLUSH LOGSFLUSH BINARY LOGS 手動觸發(fā)。

binlog 文件大小,實測環(huán)境示例查看結(jié)果(僅參考):

mysql> show variables like 'max_binlog_size';
+-----------------+------------+
| Variable_name   | Value      |
+-----------------+------------+
| max_binlog_size | 1073741824 |
+-----------------+------------+
1 row in set (0.00 sec)

mysql> 
mysql> select 1073741824/1024/1024/1024;
+---------------------------+
| 1073741824/1024/1024/1024 |
+---------------------------+
|            1.000000000000 |
+---------------------------+
1 row in set (0.00 sec)

mysql> 

四、Binlog 安全清理(手動+自動,重點實測參數(shù))

Binlog 會持續(xù)占用磁盤空間,若不及時清理,可能導(dǎo)致磁盤爆滿,影響數(shù)據(jù)庫正常運行。核心禁忌:rm -rf 嚴禁直接使用 物理刪除 Binlog 文件,會導(dǎo)致 Binlog 索引文件錯亂、MySQL 啟動失敗,必須通過 MySQL 內(nèi)置命令安全清理。

結(jié)合當前實測的 binlog_expire_logs_secondsexpire_logs_days 參數(shù),重點講解自動清理配置和手動清理方法。

4.1 先搞懂:MySQL 8.0.17 自動清理參數(shù)

從 MySQL 8.0 開始,官方引入了更精細的 Binlog 自動過期清理參數(shù) binlog_expire_logs_seconds(按秒控制),優(yōu)先級高于傳統(tǒng)的 expire_logs_days(按天控制),結(jié)合實測結(jié)果詳細說明:

實測參數(shù)解讀

mysql> show variables like '%expire%';
+--------------------------------+---------+
| Variable_name                  | Value   |
+--------------------------------+---------+
| binlog_expire_logs_seconds     | 2592000 |
| disconnect_on_expired_password | ON      |
| expire_logs_days               | 0       |
+--------------------------------+---------+
3 rows in set (0.00 sec)

mysql> 
  • binlog_expire_logs_seconds = 2592000:按秒控制過期時間,2592000 秒 = 30 天,意味著 Binlog 會自動保留最近 30 天,30 天前的日志會自動刪除;
  • expire_logs_days = 0:按天控制過期時間,0 表示關(guān)閉按天過期功能;
  • 優(yōu)先級規(guī)則:binlog_expire_logs_seconds ≠ 0 expire_logs_days 只要 ,就會優(yōu)先生效, 會被忽略(這是 MySQL 8.0 的新特性)。

結(jié)論:當前的 MySQL 8.0.17 已開啟 Binlog 自動清理,規(guī)則為 保留最近 30 天,無需手動干預(yù)。

修改自動清理時間(按需調(diào)整)

若需要調(diào)整自動保留天數(shù)(如生產(chǎn)環(huán)境保留 7 天,測試環(huán)境保留 3 天),可通過以下命令在線修改,無需重啟 MySQL,永久生效:

-- 示例1:設(shè)置自動保留7天(7天=604800秒)
SET PERSIST binlog_expire_logs_seconds = 604800;

-- 示例2:設(shè)置自動保留3天(3天=259200秒)
SET PERSIST binlog_expire_logs_seconds = 259200;

-- 示例3:關(guān)閉自動清理(不推薦,會導(dǎo)致Binlog無限累積)
SET PERSIST binlog_expire_logs_seconds = 0;

說明:PERSIST 關(guān)鍵字表示參數(shù)永久生效,重啟 MySQL 后不會丟失;若使用 SET GLOBAL,則僅臨時生效,重啟后恢復(fù)默認。

4.2 手動清理 Binlog(三種方式,按需使用)

自動清理適用于日常運維,若需要手動清理過期日志(如磁盤緊急釋放空間),推薦以下三種安全方式,均在 MySQL 內(nèi)部執(zhí)行。

方式1:按時間范圍清理(最常用)

刪除指定時間點之前的所有 Binlog,精準控制清理范圍,適合定期手動運維:

-- 方式1:刪除7天前所有 Binlog
PURGE BINARY LOGS BEFORE NOW() - INTERVAL 7 DAY;

-- 方式2:刪除指定日期時間之前的 Binlog(精準到秒)
PURGE BINARY LOGS BEFORE '2026-04-26 19:19:41';

方式2:按文件名精準清理(最安全)

先查看所有 Binlog 文件,保留當前活躍日志,清理前面的所有老舊日志,避免誤刪正在使用的日志:

-- 步驟1:查看所有 Binlog 文件,確認要保留的文件
SHOW BINARY LOGS;

-- 步驟2:清理指定文件之前的所有日志(保留該文件及之后的日志)
-- 示例:保留 binlog.000003,刪除 binlog.000001、binlog.000002
PURGE BINARY LOGS TO 'binlog.000003';

方式3:重置所有 Binlog(僅測試環(huán)境使用)

生產(chǎn)環(huán)境、主從架構(gòu) 嚴禁使用,該命令會清空所有歷史 Binlog,日志序號從 000001 重新開始:

RESET MASTER;

4.3 清理后驗證

執(zhí)行清理命令后,通過以下命令確認舊日志已刪除:

SHOW BINARY LOGS;

若老舊日志已消失,僅保留目標日志或新日志,說明清理成功。

五、日常運維常用命令匯總(直接復(fù)制使用)

-- 1. 查看 Binlog 開啟狀態(tài)
SHOW VARIABLES LIKE 'log_bin';

-- 2. 查看 Binlog 存儲路徑+前綴
SHOW VARIABLES LIKE 'log_bin_basename';

-- 3. 查看所有 Binlog 文件
SHOW BINARY LOGS;

-- 4. 查看當前正在寫入的 Binlog
SHOW MASTER STATUS;

-- 5. 查看 Binlog 日志格式
SHOW VARIABLES LIKE 'binlog_format';

-- 6. 手動切換 Binlog(推薦)
FLUSH BINARY LOGS;

-- 7. 查看自動清理參數(shù)
SHOW VARIABLES LIKE '%expire%';

-- 8. 設(shè)置自動保留7天 Binlog(永久生效)
SET PERSIST binlog_expire_logs_seconds = 604800;

-- 9. 按時間清理7天前 Binlog
PURGE BINARY LOGS BEFORE NOW() - INTERVAL 7 DAY;

-- 10. 按文件名清理(保留 binlog.000003 及之后)
PURGE BINARY LOGS TO 'binlog.000003';

六、總結(jié)

本文基于 MySQL 8.0.17 實測環(huán)境,聚焦 Binlog 核心運維操作,重點總結(jié)以下關(guān)鍵點,方便日常查閱:

  • 查看操作:通過log_bin_basename、SHOW BINARY LOGS 可快速定位 Binlog 位置、文件列表,掌握日志狀態(tài);
  • 切換操作:日常運維(備份、變更)前,用 FLUSH BINARY LOGS 手動切換日志,拆分操作區(qū)間,便于后續(xù)排查;
  • 清理操作:禁止直接物理刪除 Binlog,手動清理用 PURGE 命令,自動清理依賴 MySQL 8.0 新參數(shù) binlog_expire_logs_seconds(優(yōu)先級高于 expire_logs_days);
  • 實測重點:當前環(huán)境默認自動保留 30 天 Binlog,無需額外配置,可按需用 SET PERSIST 調(diào)整保留天數(shù);
  • 生產(chǎn)建議:Binlog 保留天數(shù)根據(jù)業(yè)務(wù)需求調(diào)整(核心業(yè)務(wù) 3~7 天),定期檢查磁盤空間,避免日志累積導(dǎo)致磁盤爆滿。

以上就是MySQL 8.x中Binlog核心操作教學:查看、切換、清理的詳細內(nèi)容,更多關(guān)于MySQL Binlog操作的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

武强县| 克拉玛依市| 河曲县| 黔南| 景德镇市| 宝清县| 衡阳市| 东乡族自治县| 威信县| 乌海市| 榆社县| 介休市| 越西县| 苍南县| 海伦市| 紫阳县| 汝南县| 老河口市| 全南县| 青海省| 个旧市| 濉溪县| 四子王旗| 嘉义市| 芦溪县| 阿鲁科尔沁旗| 临西县| 明溪县| 林芝县| 大田县| 韶关市| 革吉县| 永宁县| 明光市| 仁化县| 筠连县| 资阳市| 民勤县| 茌平县| 合江县| 新田县|