,MySQL DBA偶尔会遇到因为空间不足,在不能删除数据之前,可能先想到的是通过删除binlog暂时解决空间问题。周末本人也遇到这样的情况,因为不在电脑旁边,找领导出马并且使用手机把命令打出发给老板去删除binlog。想想还是写一个binlog删除工具吧,以后遇到此类问题,直接使用脚本工具合适。
delbinlog。sh
# !/bin/bash
# #作者yangyi@youzan.com
# 20160327日期
# delnums是每次删除多少个,分批次删除。
# rest_num是要保留多少个binlog,可以根据实际情况调整。
如果[$ # lt 4];然后
,,回声”用法:$ 0,- p - r res_nums港”
,1,退出
fi
虽然getopt”: p: r:“arg
做
,,arg美元在
,,,,p)
,,,,,#回声“p参数:$ OPTARG”
,,,,,端口=$ OPTARG
,,,,,,
,,,,r)
,,,,,#回声“d参数:$ OPTARG”
,,,,,res_nums=$ OPTARG
,,,,,,
,,,,?),#当有不认识的选项的时候参数为?
,,,,,回声“unkonw论点”
,,,,,回声”用法:$ 0,- p - r res_nums港”
,,,,,退出1
,,,,,,
,,esac
做
如果(s/电脑/my_港口/mysqld美元。袜子];然后
,,套接字="/电脑/my_港口/mysqld美元。袜子”
elif (s/电脑/美元港口/运行/mysql。袜子,];然后
,美元,套接字="/电脑/我的港口/运行/mysql。袜子”
fi
MYSQL=" MYSQL -uroot - s ${插座}“
del_nums=3
logs_num='美元MYSQL - e”显示主日志;| wc - l '
回声“有美元logs_num二进制日志…”
如果[[$ res_nums gt logs_num美元]],
然后
,退出0
fi
在[[$ res_nums lt logs_num美元]];做
,美元,del_to_binlog=' MYSQL——skip-column-names - e”显示主日志;美元,|头- n del_nums | awk“{打印$ 1}’终结”
,美元,MYSQL - e”清洗主日志“del_to_binlog美元”;“
,,回声”清洗主日志,del_to_binlog美元……“
,美元,logs_num=' MYSQL——skip-column-names - e”显示主日志;| wc - l '
,,睡眠2
做
logs_num='美元MYSQL - e”显示主日志;| wc - l '
回声“有美元logs_num二进制日志…”
有需要的可以根据自己生产环境的实际情况,适当修改。
delbinlog。sh
# !/bin/bash
# #作者yangyi@youzan.com
# 20160327日期
# delnums是每次删除多少个,分批次删除。
# rest_num是要保留多少个binlog,可以根据实际情况调整。
如果[$ # lt 4];然后
,,回声”用法:$ 0,- p - r res_nums港”
,1,退出
fi
虽然getopt”: p: r:“arg
做
,,arg美元在
,,,,p)
,,,,,#回声“p参数:$ OPTARG”
,,,,,端口=$ OPTARG
,,,,,,
,,,,r)
,,,,,#回声“d参数:$ OPTARG”
,,,,,res_nums=$ OPTARG
,,,,,,
,,,,?),#当有不认识的选项的时候参数为?
,,,,,回声“unkonw论点”
,,,,,回声”用法:$ 0,- p - r res_nums港”
,,,,,退出1
,,,,,,
,,esac
做
如果(s/电脑/my_港口/mysqld美元。袜子];然后
,,套接字="/电脑/my_港口/mysqld美元。袜子”
elif (s/电脑/美元港口/运行/mysql。袜子,];然后
,美元,套接字="/电脑/我的港口/运行/mysql。袜子”
fi
MYSQL=" MYSQL -uroot - s ${插座}“
del_nums=3
logs_num='美元MYSQL - e”显示主日志;| wc - l '
回声“有美元logs_num二进制日志…”
如果[[$ res_nums gt logs_num美元]],
然后
,退出0
fi
在[[$ res_nums lt logs_num美元]];做
,美元,del_to_binlog=' MYSQL——skip-column-names - e”显示主日志;美元,|头- n del_nums | awk“{打印$ 1}’终结”
,美元,MYSQL - e”清洗主日志“del_to_binlog美元”;“
,,回声”清洗主日志,del_to_binlog美元……“
,美元,logs_num=' MYSQL——skip-column-names - e”显示主日志;| wc - l '
,,睡眠2
做
logs_num='美元MYSQL - e”显示主日志;| wc - l '
回声“有美元logs_num二进制日志…”
有需要的可以根据自己生产环境的实际情况,适当修改。