清理300多台MySQL数据库的过期binlog日志
早晨睡梦中,被on-call了,说磁盘报警,赶紧起来打开email,收到上百封email报警,数据库磁盘不够了,查询了原因
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