MySQL --Binary log

最近在查看监控服务器的时候发现,有个日志文件居然有14G之多,查了下资料,介绍如下:

binary log,mysql中一个非常重要的部分,其主要作用有两个:

1.做主从同步时用来保证masterslave一致

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

这台服务器mysqlyum默认安装,日志文件保存路径是:/var/lib/mysql

 

.mysql的操作管理

 

1.刷新日志

mysql > flush logs;

2.查看当然数据库binlog信息

mysql > show binary logs;

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

| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000041 | 149 | 
| mysql-bin.0000
42 | 149 | 
| mysql-bin.0000
43 | 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文件配置

脚本写法