Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1105|回复: 0

Mysql Master log 处理

[复制链接]

该用户从未签到

发表于 2011-10-17 11:03:25 | 显示全部楼层 |阅读模式
我们新IM项目在运营环境中的Mysql Master 的binlog是非常多的,特别是在并发量非常大的情况下!这些binlog占用空间比较大,如果长时间不做清理工作,可能导致Master 和slave 同步阻塞而同步失败!或者其它报错原因引起业务系统不可用!所以在部属前freeke在Google中找了所有关于MYSQL复制可能会出现的问题和别人遇到的问题来总结,包括优化方法在部属时一并做到位。非常担心在运行过程中遇到同步相关的问题!引起实时业务中断和影响!以至于天天早上五点就睡不着啦!

-rw-rw----  1 mysql mysql 1074006749 Aug 27 08:46 mysql-bin.000001
-rw-rw----  1 mysql mysql   71416149 Aug 27 09:03 mysql-bin.000002
-rw-rw----  1 mysql mysql 1073741965 Aug 28 10:43 mysql-bin.000003
-rw-rw----  1 mysql mysql 1073741891 Aug 30 03:53 mysql-bin.000004
-rw-rw----  1 mysql mysql  499047762 Sep  2 18:06 mysql-bin.000005

如果有几百个bin log文件那磁盘空间马上就会报警了!

我们需要使用一些方法来自动清理bin log文件,在CU查了一下,有以下几种方法:
1、shell  清理

#!/bin/sh
## 2007-11-6

DELLOG="/usr/local/logs/del-sqlbin.log.`date +%d`"
DELTMP="/usr/local/logs/del-sqlbin.tmp"
MAIL_ADDR="xxx@xxx.xx"
exec &>$DELLOG

DT=`date +'%Y-%m-%d %T'`
SINGLE=0
sleep 30

hostname
echo `date +'%Y-%m-%d %T'`
echo "EXEC>>"
echo &quotURGE MASTER LOGS BEFORE '$DT';"
echo "PURGE MASTER LOGS BEFORE '$DT';" >$DELTMP
mysql -uroot -pxxx <$DELTMP

if [ $? = 0 ];then
        echo "Purge master logs sucess!"
else
        echo "Purge master logs failure!"
        SINGLE=1
fi
echo "--------------------------------"
echo

if [ $SINGLE = 1 ];then
        mail -s "Purge_master_logs_err" $MAIL_ADDR <$DELLOG
fi

2、MYSQL自动删除(只保留多少天的日志文件)

mysql有一个参数expire_logs_days ,即保留多长时间的binlog
set @expire_logs_days=xxx;
flush logs;

【msyqld】
expire_logs_day=20


3、shell 清理多少天前的日志文件
01 06 * * *  find /var/lib/mysql/ -type f -name "mysql-bin.000*" -atime +7 -exec rm -f {} \;

4、将多少天前的日志文件自动压缩(写个shell crontab),该压缩文件可以放到MYSQL备份使用的NAS上去保留二年时间。

5、使用shell 监控master 、slave 之间同步是否成功,如果不成功短信报警和MSN报警、邮件报警

6、在使用第2种方法时,可能我清楚slave何时会处理完日志同步,所以写一个脚本实现连接到slave去检测是否同步完成,如果同步完成,就连接到master清除旧的日志文件,或者调用压缩脚本来SCP到NAS上去。

MySQL Replication Log PurgingMySQL master servers won't remove their logs automatically when slaves are done with them. You can set expire_logs_days to remove them after a certain number of days. But, you are not assured that a slave is done with the logs. So, we wrote a script to connect to slaves and then purge logs on the master servers. It works for us. Your mileage may vary.
flush_mysql_master.php.gz
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-22 20:56 , Processed in 0.510412 second(s), 35 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表