Google
 

音樂分享 - 「君がいるから」by 江口一聲

2007年7月17日 星期二

mysql binary log 超佔空間~ 導致 /var 分割區爆滿

Debian GNU/Linux 預設 mysql 的 binary log 檔會保留10天 ( /var/log/mysql/mysql-bin.xxxxxx ),當硬碟空間(/var分割區)不是很大且mysql的資料量又不小時,常常因為保留太多的 binary log 而造成空間不足。

解法如下:

(開啟 mysql設定檔) vi /etc/mysql/my.cnf

(找到以下部份)
# The following can be used as easy to replay backup logs or for replication.
#server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
# WARNING: Using expire_logs_days without bin_log crashes the server! See README.Debian!
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name


(把預設保留天數改成3天)expire_logs_days = 3

改完之後記得重新啟動 mysql 就一切搞定了。 (重新啟動時就會自動刪去超過3天的 binary log)

另外1…

mysqladmin flush-logs 可以立刻 rotate binary log ,如果確定 rotate 過的 log 是不需要的備份,那就能隨意刪除了。

另外2… 底下這篇有很棒的教學,教我們如何自 binary log 中把資料庫還原回來。
Source: Restoring lost data from the Binary Update Log

% mysqlbinlog hostname-bin.001 重播資料庫變動過程
% mysqlbinlog --database=phpBB2 hostname-bin.108 重播 phpBB2 資料庫變動過程
% mysqlbinlog --database=phpBB2 hostname-bin.108 | mysql phpBB2 還原 phpBB2 資料庫

沒有留言: