MySQL --Binary log
最近在查看监控服务器的时候发现,有个日志文件居然有14G之多,查了下资料,介绍如下:
binary log,是mysql中一个非常重要的部分,其主要作用有两个:
1.做主从同步时用来保证master和slave一致
2.做备份还原用来保证数据库的完整性
开启binary log方法如下
# vi /etc/my.cnf
log-bin=master-binlog-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文件配置
脚本写法