萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

關閉 MySQL/MariaDB Binlog 並清理歷史日誌文件操作指南

LNMP 一鍵包默認開啟 Binlog,高寫入場景下日誌文件 (mysql-bin.0000*) 會佔滿磁盤導致數據庫無法啟動。本文提供安全清理現有 Binlog與徹底禁用/限制保留天數的標準操作步驟,適用 MySQL 5.6/5.7/8.0 及 MariaDB 同系列版本。

一、清理現有 Binlog(安全方式)

切勿直接 rm 文件! 必須通過 MySQL 客戶端執行 RESET MASTER,否則 mysql-bin.index 索引文件不同步,重啟報錯。


# 進入 MySQL/MariaDB 客戶端
/usr/local/mysql/bin/mysql -u root -p
# 或
/usr/local/mariadb/bin/mysql -u root -p

# 執行重置(刪除所有 binlog 並重置 index)
RESET MASTER;
QUIT;
RESET MASTER 執行截圖

二、徹底禁用 Binlog

修改 /etc/my.cnf


[mysqld]
# 註釋掉以下兩行(行首加 #)
# log-bin=mysql-bin
# binlog_format=mixed

重啟服務生效


/etc/init.d/mysql restart
# 或
/etc/init.d/mariadb restart

三、折中方案:限制保留天數(推薦生產環境)

若需保留主從複制/增量備份能力,建議保留 Binlog 但設置過期自動清理:


[mysqld]
log-bin=mysql-bin
binlog_format=mixed
expire_logs_days = 7   # 保留 7 天,自動清理超期文件
max_binlog_size = 100M # 單文件上限,防止單文件過大

重啟後生效,無需人工清理,磁盤空間可控。

四、路徑差異說明

本文以 LNMP 一鍵包路徑為例:

  • MySQL:/usr/local/mysql/var/
  • MariaDB:/usr/local/mariadb/var/
  • 配置文件:/etc/my.cnf
  • 服務腳本:/etc/init.d/mysql 或 /etc/init.d/mariadb

其他安裝方式(yum、apt、二進制包)請根據實際路徑調整命令,邏輯完全一致。

五、避坑提醒

  • 主庫禁用 Binlog 將導致從庫無法複制,確認業務無主從依賴再操作
  • RESET MASTER 會清空所有 Binlog,若需保留近期日誌用於恢復,請先備份或用 PURGE BINARY LOGS TO 'mysql-bin.0000XX' 精確清理
  • 修改配置後必須重啟服務,SET GLOBAL log_bin=OFF 僅運行時生效,重啟失效
copyright © 萬盛學電腦網 all rights reserved