首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 二進制日誌清理與禁用指南

     編輯:MySQL 資料庫相關知識

MySQL 二進制日誌(Binlog)用於主從複制與時間點恢復,但長期累積會佔用大量磁盤空間。本文說明安全清理與永久禁用的操作步驟與風險提示。

一、手動清理現有 Binlog

# 刪除所有 Binlog 文件(謹慎操作,建議先備份)
rm -f /usr/local/mysql/var/mysql-bin.*

# 重啟服務使變更生效(LNMP 環境示例)
/root/lnmp restart

⚠️ 風險提示: 直接刪除文件會導致主從複制中斷、PURGE BINARY LOGS 記錄不一致。生產環境建議使用 SQL 命令清理:

-- 刪除指定文件之前的所有日誌
PURGE BINARY LOGS TO 'mysql-bin.000123';

-- 或按時間清理(保留 7 天)
PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);

二、永久禁用 Binlog 生成

編輯配置文件 /etc/my.cnf(或 /etc/mysql/my.cnf),在 [mysqld] 區段註釋或移除相關行:

[mysqld]
# log-bin=mysql-bin          # 註釋此行禁用 Binlog
# binlog_format=mixed        # 同步註釋

修改後重啟 MySQL 服務生效。

三、替代方案:保留 Binlog 但限制體積與保留天數

[mysqld]
log-bin=mysql-bin
binlog_format=ROW
expire_logs_days=7           # 自動清理 7 天前日誌
max_binlog_size=100M         # 單文件上限 100MB
binlog_expire_logs_seconds=604800  # MySQL 8.0+ 推薦用秒數

此配置兼顧「時間點恢復能力」與「磁盤空間可控」,適合大多數生產環境。

四、操作前必讀

  • 禁用 Binlog 將導致 無法搭建主從複制、無法基於時間點恢復(PITR)。
  • 若業務僅需單機運行且備份策略依賴 mysqldump 全量導出,禁用 Binlog 可接受。
  • 清理前務必確認:無活躍 Slave 依賴該 Binlog、無進行中的 XtraBackup 增量備份。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved