分享一例shell脚本,用于清理多达300多台msyql数据库中过期的binlog日志。 清理mysql中过期的binlog日志。
问题描述:美好梦中,传来阵阵报警声,磁盘空间满。
复制代码代码示例:
[root@it cacti]$ ssh xxxx "df -h"
/dev/mapper/Sys-mysqldata 300G 270G 30G 90% /mysqldata 15G 166M 14G 2% /mysqldata/binlog
原因:
继续分析:
复制代码代码示例:
[root@it 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.it.net.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;
执行清理操作,把结果输出到日志: |