Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  shell  >  正文 清理多台MySQL数据库的过期binlog日志的shell脚本

清理多台MySQL数据库的过期binlog日志的shell脚本

发布时间:2014-12-04   编辑:www.jquerycn.cn
分享一例shell脚本,用于清理多达300多台msyql数据库中过期的binlog日志,有需要的朋友参考下。

本节主要内容:
清理mysql中过期的binlog日志。

问题描述:美好梦中,传来阵阵报警声,磁盘空间满。
查看:
 

复制代码 代码示例:
[root@jbxue cacti]$ ssh xxxx "df -h"  
/dev/mapper/Sys-mysqldata 
300G   270G   30G  90% /mysqldata 
15G  166M   14G   2% /mysqldata/binlog 

原因:
近段时间业务量增长比较快,可能是产生了过多的binlog导致的。

继续分析:
 

复制代码 代码示例:
[root@jbxue cacti]$ ssh xxxx  " sudo -u mysql ls /mysqldata/data/" |grep mysql-bin 
mysql-bin.001350 
....... 
mysql-bin.002352 
mysql-bin.log.index 
 

binlog日志文件1000多个,看来要写个脚本清理下了。

本文的主角出场,一个清理多台MySQL数据库的过期binlog日志的shell脚本,分享给大家。

clear_binlog.sh脚本:
 

复制代码 代码示例:
#!/bin/bash
#
#site: www.jquerycn.cn
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

您可能感兴趣的文章:
清理多台MySQL数据库的过期binlog日志的shell脚本
批量清除128组节点db上过期的binlog释放磁盘空间的shell脚本
mysql全备份与binlog 自动恢复的shell脚本
批量清除过期的binlog日志释放磁盘空间的shell脚本
mysql binlog 自动清理脚本一例
mysql 主从同步一例
MySQL主从服务器配置的一些总结
清除mysql的log-bin日志的方案
一个mysql二进制日志管理的shell脚本
mysql故障:重启不了,一直在重启状态中

[关闭]