免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1436 | 回复: 0
打印 上一主题 下一主题

mysql binlog [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-22 08:53 |只看该作者 |倒序浏览

一。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是同义词。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP