Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2549308
  • 博文数量: 271
  • 博客积分: 6659
  • 博客等级: 准将
  • 技术积分: 3141
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-17 10:24
文章分类

全部博文(271)

文章存档

2016年(2)

2015年(12)

2014年(7)

2013年(19)

2012年(22)

2011年(81)

2010年(128)

分类: Mysql/postgreSQL

2011-08-02 15:06:46


一。binglog文件介绍
mysql-bin.000001、mysql-bin.000002等文件是数据库的操作日志,例如UPDATE一个表,或者DELETE一些数据,即使该语句没有匹配的数据,这个命令也会存储到日志文件中,还包括每个语句执行的时间,也会记录进去的。
这样做主要有以下两个目的:

1:数据恢复
如果你的数据库出问题了,而你之前有过备份,那么可以看日志文件,找出是哪个命令导致你的数据库出问题了,想办法挽回损失。
2:主从服务器之间同步数据
主服务器上所有的操作都在记录日志中,从服务器可以根据该日志来进行,以确保两个同步。
处理方法分两种情况:
1:只有一个mysql服务器,那么可以简单的注释掉这个选项就行了。
vi /etc/my.cnf把里面的log-bin这一行注释掉,重启mysql服务即可。

2:如果你的环境是主从服务器,那么就需要做以下操作了。
A:在每个从属服务器上,使用SHOW SLAVE STATUS来检查它正在读取哪个日志。
B:使用SHOW MASTER LOGS获得主服务器上的一系列日志。
C:在所有的从属服务器中判定最早的日志,这个是目标日志,如果所有的从属服务器是更新的,就是清单上的最后一个日志。
D:清理所有的日志,但是不包括目标日志,因为从服务器还要跟它同步。


二。清理日志方法为:
PURGE MASTER LOGS TO 'mysql-bin.010';
PURGE MASTER LOGS BEFORE '2010-12-30 00:00';


如果你确定从服务器已经同步过了,跟主服务器一样了,那么可以直接RESET MASTER将这些文件删除。



三。expire_logs_days
在一个繁忙的master db server上,binlog日志文件增长速度很快,如果不定时清除,硬盘空间很快就会被充满
expire_logs_days #官方说明

二进制日志自动删除的天数。默认值为0,表示”没有自动删除“。启动时和二进制日志循环时可能删除。

设置自动清理mysql binlog日志,配置my.cnf:

1. expire_logs_days = 10 #10为天数


四。MySQL的 expire_logs_days 和 PURGE MASTER LOGS 无效问题

如果你之前手工删除过MySQL的binlog而没有更新对应的Index文件,则MySQL在运行这个命令的时候会试图删除index文件中记录的但已经被手工删除掉的binlog文件,这样MySQL会得到一个错误后停止命令运行,导致操作没有效果,手工调整好Index文件后就没有问题了


查看与日志相关的参数

show binary logs;
show variables like '%log%';
show master logs;
MASTER和BINARY是同义词。
阅读(1335) | 评论(0) | 转发(0) |
0

上一篇:ipvsadm命令参考

下一篇:CISCO ACL 顺序修改

给主人留下些什么吧!~~