mysql主从日志的定期清理
2013-01-21 09:59
351 查看
mysql主从的binlog定时删除是很重要的,一般是通过expire_logs_days = 10来设置binlog保留的天数(mysql5.0一下版本不支持),但有时这还不够,假如有几天的日志量非常大,硬盘可能会满,所以不但要设置保留的天数,还要监控硬盘的空间使用情况。写了一个脚本,适合各个版本的mysql,保留3天的日志,当存放日志的硬盘使用率超过80%,则保留2天,但至少会保留一天的binlog日志文件。
本文出自 “王伟” 博客,请务必保留此出处http://wangwei007.blog.51cto.com/68019/1123088
#!/bin/env python # -*- coding: utf-8 -*- ############################################################## #查看存在binlog的目录位置并找出3天前的最后一个bin-log文件名字 #删除3天以前的binlog文件,删除之后data1目录挂载的硬盘使用率超 #过的80%的话,继续删除2天前的日志文件,至少保留一天的日志。 ############################################################## import os,sys,time,MySQLdb def log_w(text): logfile = "/usr/local/zabbix/bin/delet.log" now = time.strftime("%Y-%m-%d %H:%M:%S") tt = now + "\t" + str(text) + "\n" f = open(logfile,'a+') f.write(tt) f.close() def mysql_conn(port,lastlog,days): try: center_ip = '127.0.0.1' center_user = 'repl_monitor' center_passwd = 'VQMQLGwTaw3k0UV8' sql = "PURGE MASTER LOGS TO '%s';" % lastlog conn = MySQLdb.connect(host = center_ip,port = int(port),user = center_user,passwd = center_passwd,connect_timeout=5) cursor = conn.cursor() cursor.execute(sql) alldata = cursor.fetchall() cursor.close() conn.close() text = "Deltet before %s days binlog,deltet %s before !" % (days,lastlog) log_w(text) except Exception,e: log_w(e) def find_logdir(): conn = "find / -name binlog|grep -v usr" logdir_list = os.popen(conn).readlines() if len(logdir_list) != 0: for logdir in logdir_list: datadir = logdir.strip().split("/")[1] if "mysql_log" in logdir.strip(): port = 3306 else: port = logdir.strip().split("/")[3].split("-")[-1] days = 3 while 1: conn = "find %s -mtime %s|sort" % (logdir.strip(),days) count = os.popen(conn).readlines() if len(count) != 0: lastlog = count[-1].strip().split("/")[-1] mysql_conn(port,lastlog,days) df = "df -h|grep -e '%s$'|awk '{print $5}'|awk -F '%%' '{print $1}'" % datadir disk = os.popen(df).read().strip() if not disk: break else: if int(disk) < 80: break else: days = days - 1 if days == 1: break else: sys.exit() if __name__ == "__main__": find_logdir()
本文出自 “王伟” 博客,请务必保留此出处http://wangwei007.blog.51cto.com/68019/1123088
相关文章推荐
- mysql主从日志的定期清理
- mysql主从日志的定期清理
- mysql主从binlog日志自动清理及手动删除
- mysql复制环境清理二进制日志
- MySQL 主从复制搭建,基于日志(binlog)
- mysql主从复制配置(基于日志点)
- sql server 定期自动清理日志
- MYSQL异常处理日志:主从库同步延迟时间过长的分析
- mysql 查看 删除 日志操作总结(包括单独和主从mysql)
- Mysql备份以及定期清理备份
- Mycat学习笔记 第二篇. MySql 读写分离与日志分析——主从多结点
- mysql清理日志
- Mysql清理二进制日志的技巧
- MYSQL异常处理日志:主从库同步延迟时间过长的分析
- Linux下Tomcat日志定期清理 及 logrotate 配置
- mysql的binlog日志手动删除和自动清理
- MySQL 自动清理binlog日志的方法
- mysql日志清理
- 数据库日志太大?定期用sql 清理数据库日志即可!
- [MySQL] 设置自动清理binlog日志和手动删除的方法