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

  ,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二进制日志…”
  
  有需要的可以根据自己生产环境的实际情况,适当修改。
  
  

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