天天看點

MySQL二進制日志的管理MySQL --Binary log MySQL –Binary log 腳本清理

最近在檢視監控伺服器的時候發現,有個日志檔案居然有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 &gt; flush logs;

2.檢視當然資料庫binlog資訊

mysql &gt; show binary logs;

+------------------+-----------+

| Log_name | File_size |

| mysql-bin.000041 | 149 | 

| mysql-bin.000042 | 149 | 

| mysql-bin.000043 | 106 | 

3.清除曆史log,保留最近的

mysql &gt; 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,如需轉載請自行聯系原作者