MySQL --Binary log
最近在查看監控服務器的時候發現,有個日誌文件居然有14G之多,查了下資料,介紹如下:
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
清理完成後效果
MySQL –Binary log 腳本清理
考慮到日誌每天有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文件配置
腳本寫法