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

MySQL 日誌文件全生命週期管理:類型、輪轉、清理、鏡像協同

     編輯:MySQL 資料庫相關知識

四大核心日誌類型

日誌啟動選項用途格式
General Query Log--log[=file]所有連線/查詢審計文本
Slow Query Log--log-slow-queries[=file] --long-query-time=10慢查詢分析優化文本
Binary Log--log-bin[=file] --log-bin-index=file復制、時間點恢復二進制
Error Log--log-error[=file] (mysqld_safe 管理)啟動/關閉/錯誤堆疊文本

舊版 --log-update (Update Log) 已棄用,合併入 Binlog。

日誌輪轉腳本(Linux/Unix)

#!/bin/bash
# rotate_log.sh logfile
logfile=$1
for i in 7 6 5 4 3 2 1; do
  [ -f "$logfile.$i" ] && mv "$logfile.$i" "$logfile.$((i+1))"
done
mv "$logfile" "$logfile.1"
mysqladmin -u flush_user -pflush_pass flush-logs
  • 保留 8 代(log.1~log.8),第 9 次輪轉覆蓋 log.8。
  • 需建立專用 flush_user 僅擁有 RELOAD 權限。
  • 系統 logrotate 亦可管理,RPM 安裝含 /etc/logrotate.d/mysql。

基於時間的過期清理

#!/usr/bin/perl -w
# expire_log.pl logfile_pattern
$max_age = 7;  # 天
foreach $file (@ARGV) {
  unlink $file if -e $file && -M $file >= $max_age;
}
# 用法:expire_log.pl /var/lib/mysql/mysql-bin.[0-9]*

適用於 Binlog、Update Log 等帶序號文件。

復制環境下的 Binlog 安全清理

  1. 遍歷所有 Slave:SHOW SLAVE STATUS 記錄 Master_Log_File。
  2. 取最小序號(最舊仍在用的 Binlog)。
  3. Master 執行:PURGE MASTER LOGS TO 'mysql-bin.000123';

切勿手動刪除 Binlog 文件,會導致索引不一致、Slave 復制中斷。

InnoDB/BDB 專用日誌目錄

--innodb_log_group_home_dir=/logs/innodb
--bdb_logdir=/logs/bdb

錯誤日誌無法用 flush-logs 輪轉,需外部 mv + kill -HUP(Windows 需重啟服務)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved