【工具】批量删除binlog 的脚本

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:   MySQL DBA 偶尔会遇到因为空间不足,在不能删除data之前,可能先想到的是通过删除binlog 暂时解决空间问题。周末本人也遇到这样的情况,因为不在电脑旁边,找领导出马并且使用手机把命令打出发给老板去删除binlog。
  MySQL DBA 偶尔会遇到因为空间不足,在不能删除data之前,可能先想到的是通过删除binlog 暂时解决空间问题。周末本人也遇到这样的情况,因为不在电脑旁边,找领导出马并且使用手机把命令打出发给老板去删除binlog。想想还是写一个binlog 删除工具吧,以后遇到此类问题,直接使用脚本工具合适。

delbinlog.sh
#!/bin/bash
##author yangyi@youzan.com
#date 20160327
#delnums 是每次删除多少个,分批次删除。
#rest_num是要保留多少个binlog ,可以根据实际情况调整。
if [ $# -lt 4 ];then
   echo "Usage: $0  -p PORT -r res_nums"
   exit 1
fi
while getopts ":p:r:" arg
do
    case $arg in
        p)
          #echo "p's arg:$OPTARG"
          PORT=$OPTARG
          ;;
        r)
         #echo "d's arg:$OPTARG"
          res_nums=$OPTARG
          ;;
        ?)  #当有不认识的选项的时候arg为?
          echo "unkonw argument"
          echo "Usage: $0  -p PORT -r res_nums"
          exit 1
          ;;
    esac
done
if [ -S /srv/my_$PORT/mysqld.sock ]; then
   SOCKET="/srv/my_$PORT/mysqld.sock"
elif [ -S /srv/my$PORT/run/mysql.sock  ]; then
   SOCKET="/srv/my$PORT/run/mysql.sock"
fi
MYSQL="mysql -uroot -S ${SOCKET} "
del_nums=3
logs_num=`$MYSQL -e "show master logs;" | wc -l `
echo "there are $logs_num binary logs .."
if [[ $res_nums -gt $logs_num ]];
then
  exit 0
fi
while [[ $res_nums -lt $logs_num ]]; do
   del_to_binlog=`$MYSQL --skip-column-names -e "show master logs;"  | head -n $del_nums | awk 'END {print $1}'`
   $MYSQL -e "purge master logs to '$del_to_binlog' ;"
   echo "purge master logs to  $del_to_binlog ... "
   logs_num=`$MYSQL --skip-column-names -e "show master logs;" | wc -l `
   sleep 2
done
logs_num=`$MYSQL -e "show master logs;" | wc -l `
echo "there are $logs_num binary logs .."

有需要的可以根据自己生产环境的实际情况,适当修改。


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
Oracle 关系型数据库 数据库
9-2 Oracle数据库(表)的逻辑备份与恢复 --导出与导入
9-2 Oracle数据库(表)的逻辑备份与恢复 --导出与导入
181 1
|
5月前
|
关系型数据库 MySQL Shell
MySQL回滚脚本: 误操作delete binlog回滚shell脚本
MySQL回滚脚本: 误操作delete binlog回滚shell脚本
|
SQL 数据库 存储
SQL SERVER数据库删除LOG文件和清空日志的方案
原文:SQL SERVER数据库删除LOG文件和清空日志的方案 数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间。SQL Server数据库都有log文件,log文件记录用户对数据库修改的操作。
8945 0
|
SQL 关系型数据库 MySQL
|
关系型数据库 MySQL 数据库管理
FAQ系列 | 不同复制模式下,如何忽略某些binlog事件
FAQ系列 | 不同复制模式下,如何忽略某些binlog事件
|
关系型数据库 MySQL 数据库

热门文章

最新文章