【工具】批量删除binlog 的脚本
发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,MySQL DBA 偶尔会遇到因为空间不足,在不能删除data之前,可能先想到的是通过删除binlog 暂时解决空间问题。周末本人也遇到这样的情况,因为不在电脑旁边,找领导出马并且使用手机把命令打出发
千家信息网最后更新 2025年11月15日【工具】批量删除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 .."
有需要的可以根据自己生产环境的实际情况,适当修改。
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 .."
有需要的可以根据自己生产环境的实际情况,适当修改。
情况
工具
实际
空间
问题
脚本
合适
适当
命令
手机
批次
时候
环境
电脑
老板
还是
生产
调整
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
浙江app软件开发费用明细
临河软件开发
如果两个事务同时对数据库
网络安全证书认证
报纸期刊数据库
c 获取服务器文件
计算机信息网络安全员答案
网络工程师跟网络安全工程师
fm2020数据库六万人
聊城玖翼网络技术有限公司
dataair数据库
不同项目怎么互通数据库
嵊州行业专业软件开发
CNK系列全文数据库中
2019网络安全宣传周记录
2核CPU4g内存的服务器
常州软件开发月薪多少
放心的软件开发团队
芝罘区微信公众号软件开发公司
崇明区新能源软件开发要多少钱
云服务器和本地虚拟机连通
语音同步翻译软件开发公司
论网络安全治理论文
乡镇网络安全宣传
数据库文件备份方法工具
株洲正规软件开发哪家专业
需要掌握的网络技术
阿里云10元服务器
关系数据库包括哪三个部分
数据库打印文件失败