最近在檢視監控伺服器的時候發現,有個日志檔案居然有14G之多,查了下資料,介紹如下:
<a href="http://s3.51cto.com/wyfs02/M01/11/9E/wKiom1LXT2vyyNpbAAHt1KbA6J0567.jpg" target="_blank"></a>
binary log,是mysql中一個非常重要的部分,其主要作用有兩個:
1.做主從同步時用來保證master和slave一緻
2.做備份還原用來保證資料庫的完整性
開啟binary log方法如下
# vi /etc/my.cnf
log-bin=master-bin
log-bin-index=master-bin.index
日志的預設儲存名稱是:mysql-bin.xxxxxx
預設索引名稱是:mysql-bin.index
這裡我們做了設定,索引名稱是:master-bin.index
這台伺服器mysql是yum預設安裝,日志檔案儲存路徑是:/var/lib/mysql
二.mysql的操作管理
1.重新整理日志
mysql > flush logs;
2.檢視當然資料庫binlog資訊
mysql > show binary logs;
+------------------+-----------+
| Log_name | File_size |
| mysql-bin.000041 | 149 |
| mysql-bin.000042 | 149 |
| mysql-bin.000043 | 106 |
3.清除曆史log,保留最近的
mysql > purge binary logs to 'mysql-bin.000043';
4.檢視本地binlog檔案
# ls -l /var/lib/mysql/ | grep bin.
-rw-rw---- 1 mysql mysql 19 Jan 16 11:07 master-bin.index
-rw-rw---- 1 mysql mysql 5875412 Jan 16 11:31 mysql-bin.000043
備份中清除日志
# mysqldump --flush-logs --delete-master-logs
清理完成後效果
<a href="http://s3.51cto.com/wyfs02/M00/11/9E/wKioL1LXT2yB0DKZAAHy0QugDZk233.jpg" target="_blank"></a>
考慮到日志每天有300M左右的增長,每個月差不多有10G的日志,手動管理确實麻煩;是以想采用腳本加crontab去自動管理,當然這台伺服器隻是監控用,資料不是很重要,其實關閉binary logs就可以了,做腳本管理僅僅是練習
生産情況分析
1.資料庫伺服器和應用(監控)在同一台機器上
2.沒有主從互備
3.硬碟空間約1T
4.每個Binary logs大小是1G,每個月産生約10個日志檔案。
5.資料庫不大,壓縮後約2M。
6.沒有其他伺服器和這台伺服器有資料庫主從關系。
7.非核心裝置
通過前面介紹我們了解Binary logs有兩個作用
1.主從互備時資料一緻性使用,不需要考慮
2.資料恢複使用,需要考慮
結合以上資訊,決定如下管理:
1.每個月清理一次,清理時僅保留最後5條日志記錄.
2.清理前做一次資料庫備份,恢複使用.
3.資料庫備份檔案存放在根目錄/backups/mysql下,用gzip壓縮,檔案指令為cacti-日期.sql.gz
4.資料庫檔案備份檔案儲存1年(可以通過腳本或者手動操作)
Crontab檔案配置
<a href="http://s3.51cto.com/wyfs02/M02/12/26/wKiom1L7GDLgecarAAAwTCXFiLg798.jpg" target="_blank"></a>
腳本寫法
<a href="http://s3.51cto.com/wyfs02/M00/12/26/wKioL1L7F_jziUPXAAOhNiy7BFI010.jpg" target="_blank"></a>
本文轉自 chengchow 51CTO部落格,原文連結:http://blog.51cto.com/chengchow/1352163,如需轉載請自行聯系原作者