指定 bin log 最多存幾天的記錄

expire-logs-days = 7

指定刪除某個時間點以前的 bin log 記錄

PURGE BINARY LOGS BEFORE '2014-11-16 12:00:00';

指定刪除某個檔案流水號以前的 bin log 記錄

PURGE BINARY LOGS TO ‘mysql-bin.000001′;

清除 3 天前的 bin log

PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);

FLUSH LOGS 會讓 bin log 標記這個檔的記錄到這裡為止,重新記錄在新的檔案裡

MYSQL 5.5 的 /my.cnf 設定 bin log

log-bin=mysqld-bin
binlog-do-db=mysql # 只 binlog mysql 資料庫
binlog-ignore-db=test # 不 binlog test 資料庫,與 binlog-do-db 二擇一設定
max-binlog-size=100M # 一個 binlog 檔最大多少

MYSQL 5.5 的 /my.cnf 設定 general log

general-log=1 # 以前直接 log 即可
general-log-file=general.log

general log 與 error log 是不會自已輪替的,要交給 logrotate 處理

# more /etc/logrotate.d/mysqld
/var/log/mysqld.log /var/lib/mysql/general.log {
    daily
    nocompress
    rotate 30
    create 0660 mysql mysql
    missingok
    notifempty
    sharedscripts
    postrotate
      if test -x /usr/bin/mysqladmin && /usr/bin/mysqladmin ping &>/dev/null
      then
        # 要有 RELOAD 的權限
	/usr/bin/mysqladmin -u flushloguser -pflushlogpass flush-logs
      fi
    endscript
}

測試

/usr/sbin/logrotate -v /etc/logrotate.d/mysqld 

測試執行

/usr/sbin/logrotate -fv /etc/logrotate.d/mysqld 

快速備註

general_log=1
general_log_file = general.log
expire_logs_days = 14
log_slow_queries=1  # mariadb 沒有這個
slow_query_log=1
slow_query_log_file= mysqld-slow.log
slow_launch_time=2
# pager less;show variables;

延伸 : MySQL + my.cnf + log 記錄

最後修改日期: 2017 年 12 月 21 日

作者

留言

作者

mysql 5.5 binlog設定參數 expire_logs_days = 7 log-bin=mysql-bin binlog_format=mixed

[Reply]

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。