工具 批量刪除binlog 的指令碼

2021-09-23 21:00:20 字數 1670 閱讀 9940

mysql dba 偶爾會遇到因為空間不足,在不能刪除data之前,可能先想到的是通過刪除binlog 暫時解決空間問題。週末本人也遇到這樣的情況,因為不在電腦旁邊,找領導出馬並且使用手機把命令打出發給老闆去刪除binlog。想想還是寫乙個binlog 刪除工具吧,以後遇到此類問題,直接使用指令碼工具合適。

delbinlog.sh

#!/bin/bash

##author [email protected]

#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 $ "

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 '`

$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 .."

有需要的可以根據自己生產環境的實際情況,適當修改。

批量新增刪除使用者指令碼

bin bash 本指令碼用於批量新增 刪除使用者,使用者初始密碼是123456,首次登陸需要修改密碼 格式 class stu.sh 引數1 引數2 引數3 引數1 起始使用者名稱,為純數字編號,長度必須大於6 引數2 新增人數 0 999 引數3 操作 1 新增,2 刪除 例 class stu...

批量新增刪除使用者指令碼

bin bash 本指令碼用於批量新增 刪除使用者,使用者初始密碼是123456,首次登陸需要修改密碼 格式 class stu.sh 引數1 引數2 引數3 引數1 起始使用者名稱,為純數字編號,長度必須大於6 引數2 新增人數 0 999 引數3 操作 1 新增,2 刪除 例 class stu...

刪除mysql的binlog日誌

mysql的binlog日誌介紹 binlog 是mysql 以二進位制形式列印的日誌,它預設不加密,不壓縮。binlog二進位制日誌包含了所有更新了資料或者已經潛在更新了資料 例如,沒有匹配任何行的乙個delete 的所有語句。語句以 事件 的形式儲存,它描述資料更改檔案位置和格式 當用 log ...