【工具】批量删除binlog 的脚本
发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,MySQL DBA 偶尔会遇到因为空间不足,在不能删除data之前,可能先想到的是通过删除binlog 暂时解决空间问题。周末本人也遇到这样的情况,因为不在电脑旁边,找领导出马并且使用手机把命令打出发
千家信息网最后更新 2025年02月08日【工具】批量删除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安全错误
数据库的锁怎样保障安全
云计算数据库哪个好
服务器 按键精灵
三次元软件开发
防范网络安全隐患意识
数据库崩溃的句子
万载软件开发商
一个服务器带多台电脑
宿豫区多功能网络技术诚信合作
数据库合并重复
微软软件开发工程师怎么考
软件开发 个人职业前景
医保物联网数据库设计
linux服务器ssh远程
软件开发管理转行
数据库04735历年真题
抖音数据库啥意思
手机百度应用程序数据库
京东有几个服务器
jndi服务器
我的世界如何在服务器弄32k网易版
数据库数据流程
数据库的软件和字段类型
非传统安全威胁有网络安全吗
win8的服务器管理器
软件开发弹窗提示要素
网络安全新技术分论坛
数据库中实体解析的任务
信宜佳峰网络技术公司
软件开发需求分析简要说明
手机维修网络安全吗