• 清理300多台MySQL数据库的过期binlog日志


    早晨睡梦中,被 on-call了,说磁盘报警,赶紧起来打开email,收到上百封email报警,数据库磁盘不够了,查询了原因

    [xxx@xxxx cacti]$ ssh xxxx "df -h" 
    /dev/mapper/Sys-mysqldata
                          300G   270G   30G  90% /mysqldata
                           15G  166M   14G   2% /mysqldata/binlog


      
    这2天业务量增长比较快,猜测可能是产生了过多的binlog导致的。

    [xxx@xxxx cacti]$ ssh xxxx  " sudo -u mysql ls /mysqldata/data/" |grep mysql-bin
    mysql-bin.001350
    .......
    mysql-bin.002352
    mysql-bin.log.index



    binlog都有1000个了,赶紧去清理吧,手动一个个肯定不现实了,还是写脚本吧。


    clear_binlog.sh脚本如下   

    for i in `cat server03list`; do #循环遍历db列表
    	# 1 获取数据库的master binlog名称,并在控制台打印出当前执行的db名称
    	echo $i;
    	binlog=`ssh $i " /opt/mysql/product/5.5.25a/bin/mysql  -uxxxx  -ppassword --ssl-ca=/ssl/ca-cert.pem --ssl-cert=/ssl/server-cert.pem --ssl-key=/ssl/server-key.pem -e " show master status;" "|grep mysql-bin |awk '{print $1}'`;
    	echo $binlog;
    	# 2 开始执行binlog purge清理操作。
    	ssh $i " /opt/mysql/product/5.5.25a/bin/mysql  -uxxxx  -ppassword --ssl-ca=/ssl/ca-cert.pem --ssl-cert=/ssl/server-cert.pem --ssl-key=/ssl/server-key.pem -e " purge master logs to '$binlog';" "
    	# 3 check清理完的磁盘空间。
    	ssh $i "df -h" |grep mysqldata;
    	# 4 输入空行分隔
    	echo "";
    	echo "";
    	echo "";
    done;


    然后执行清理操作,并且把结果输出到日志里面
    sh clear_binlog.sh > clear_binlog.log

  • 相关阅读:
    Web应用Word生成
    记 Ubuntu14.04 Monodevelop 安装的两个问题
    CSDN上下载的一些关于Android程序调用Webservice执行不成功的问题
    Binary Search Tree Iterator
    算法之贪心算法
    《SAS编程与数据挖掘商业案例》学习笔记之十七
    数据库设计之半结构化存储
    Timus 1446. Sorting Hat 分类问题
    WebGL on iOS8 最终等到了这一天
    仿netty线程池简化版本
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3366110.html
Copyright © 2020-2023  润新知