需求:
1、自动处理mysql bin日志脚本
2、输出可读log
3、保留1周的日志
4、对所有数据库统一处理。
 
实现过程描述:
 
思路:两种方式实现
1、mysql目录通过ls获取bin日志目录并通过命令删除。
2、通过mysql命令获取bin日志,并通过命令删除。
 
相比较来说第二种更加容易实现。
 
功能语句:
mysql -h192.168.1.2 -uroot -pXXXXX < /home/GC_Tools/housekeeping/mysql_bin_log/bin/Getlog.sql > /home/GC_Tools/housekeeping/mysql_bin_log/bin/templog.txt
 
以上命令输出格式如下:
mysql-bin.001021        1073742032
mysql-bin.001022        1073742579
mysql-bin.001023        1073742818
mysql-bin.001024        1073741920
mysql-bin.001025        1073741915
mysql-bin.001026        790706635
第一列是日志名称,第二列是日志大小。
以上是截取的一部分内容,我们需要的数据是倒数第七天的日志名称。
通过mysql清理日志的命令去清理它之前的所有日志。

直接获取倒数第七行的数据:
tac templog.txt | sed -n 7p | awk -F ' ' '{print $1}'
以下给出简略版本,只实现功能:删除指定数据库的bin日志,保留七天日志。
#####################################
#!/bin/bash
TIME=`date +%Y%m%d%H%M%S`
BINPATH="/home/GC_Tools/housekeeping/mysql_bin_log"
SQLPARAM="mysql -h192.168.1.6 -uroot -pXXXXX"

echo $TIME "start clean" >> $BINPATH/log/clean.log
$SQLPARAM < $BINPATH/bin/Getlog.sql > templog.txt
BinLog=`tac templog.txt | sed -n 7p | awk -F ' ' '{print $1}'`
echo "Get the log's name is" \"$BinLog\" >>$BINPATH/log/clean.log
echo "purge binary logs to '$BinLog';" > temp.sql

 
$SQLPARAM < $BINPATH/bin/temp.sql >> $BINPATH/log/clean.log
#############################################
简略版本完成,功能测试正常。
 
接下来需要实现功能:
1、部署路径不要求,自适应。
2、读取数据库IP配置文件,并循环处理。
 
完整版本:
 
#!/bin/bash
#动态获取脚本路径
DIR="$( cd "$( dirname "$0"  )" && pwd  )"
BINPATH=`echo $DIR | sed -e 's/\/bin//'`
#获取当前系统时间
TIME=`date +%Y%m%d%H%M%S`

#while do 循环处理配置文件
while read LINE
do
#输出日志
echo $TIME >>$BINPATH/log/clean.log
echo $LINE >>$BINPATH/log/clean.log
#获取数据库ip
CHOST=`echo $LINE | awk -F ':' '{print $2}'`
#拼写数据库连接sql
SQLPARAM="mysql -h$CHOST -uroot -pXXXXX"
#查询当前连接数据库的日志信息列表
$SQLPARAM < $DIR/Getlog.sql > $DIR/templog.txt
#获取倒数七天的日志名称
BinLog=`tac $DIR/templog.txt | sed -n 7p | awk -F ' ' '{print $1}'`
#拼写清理日志sql,并保存在临时文件
echo "purge binary logs to '$BinLog';" > $DIR/temp.sql
#执行sql,清理mysql日志
$SQLPARAM < $DIR/temp.sql >>$BINPATH/log/clean.log
rm -rf $DIR/templog.txt
rm -rf $DIR/temp.sql
#循环读取配置文件内容

done<$BINPATH/etc/clean.conf

ps:配置文件实例
clean.conf
DB2:192.168.1.3
DB4:192.168.1.4
DB5:192.168.1.5
DB6:192.168.1.6

再再PS:
程序功能说明:
  定期(每周六晚)清理mysql的binlog,保留七天的日志,其余日志删除。
使用说明:
1、只需要在/etc配置文件内配置数据库名称与IP即可,不需要增加其他配置。

2、脚本本身没有检测数据库是否连接正常的功能,默认连接正常,如果数据库异常最好不要配置,不然会连接超时。

PS:写完之后发现,mysql其实有相应的配置项可以设置binlog的数量,汗颜....,不过脚本的功能和逻辑是想通的,也不算是完全没有价值和收获,当然有些大神直接一行shell命令就可以解决这个需求,我目前还在努力向这个方向迈进。

linux shell:mysql bin_log定期清理脚本的更多相关文章

  1. [分享]运维分享一一阿里云linux系统mysql密码修改脚本

    [分享]运维分享一一阿里云linux系统mysql密码修改脚本       大象吃豆子 级别: 小白 发帖 12 云币 27 加关注 写私信   只看楼主 更多操作楼主  发表于: 2014-09-3 ...

  2. linux系统mysql密码修改脚本

    编写了一个适用于阿里云linux系统 mysql密码修改脚本,使用阿里云提供的一键安装包配置后,如果account.log文件删除,并且忘记mysql密码时,可以通过脚本来重置mysql密码. 附:一 ...

  3. Linux shell编写端口扫描脚本

    Linux shell编写端口扫描脚本 需求: 扫描特定主机 扫描特定主机的特定端口 扫描特定网段 扫描特定网段中哪些主机开放了特定的端口 源码如下: #/bin/bash #该脚本用于对特定目标主机 ...

  4. linux shell 写swoole重启脚本

    linux shell 写swoole重启脚本 代码如下<pre>#!/bin/shkill `lsof -t -i:9501`sleep 2php /data/web/mircoweb/ ...

  5. Linux shell批量执行scp脚本工具

    转载: linux shell + expect:批量scp脚本工具             2011-09-13 15:51:06 分类: Python/Ruby 最近在准备一个部署的任务,其中有一 ...

  6. Linux shell简单创建用户脚本

    前面介绍简单的shell编写规则. 现在开始编写一个简单的shell脚本. Linux shell介绍 编写shell脚本    1.创建脚本文件    2.根据需求,编写脚本    3.测试执行脚本 ...

  7. linux shell mysql 数据库主从同步状态检查告警

    需求: 1.监测数据库主从状态 2.获取数据库主要参数 3.可读取配置文件 4.部署位置自适应.   参考资料: http://blog.csdn.net/yf210yf/article/detail ...

  8. linux下mysql自动备份脚本

    脚本放在 /home/user/mysql_backup.sh crontab # crontab -l # m h  dom mon dow   command 28 16 * * * /home/ ...

  9. LINUX SHELL 笔记 01: 脚本

    root@iZwz:~/labs# vim myfirst root@iZwz:~/labs# cat myfirst #!/bin/bash clear echo "this is my ...

随机推荐

  1. News common vocabulary

    英语新闻常用词汇与短语 经济篇 accumulated deficit 累计赤字 active trade balance 贸易顺差 adverse trade balance 贸易逆差 aid 援助 ...

  2. 识别有效的IP地址和掩码并进行分类统

    #include<iostream> #include<stdio.h> #include<string.h> using namespace std; int c ...

  3. lr各种问题以及解决办法

    LR 脚本为空的解决方法: 1.去掉ie设置中的第三方支持取消掉 2.在系统属性-高级-性能-数据执行保护中,添加loadrunner安装目录中的vugen.exe文件 遇到flight界面为空的解决 ...

  4. logistic回归模型

    一.模型简介 线性回归默认因变量为连续变量,而实际分析中,有时候会遇到因变量为分类变量的情况,例如阴性阳性.性别.血型等.此时如果还使用前面介绍的线性回归模型进行拟合的话,会出现问题,以二分类变量为例 ...

  5. Linux下I/O模型

    Unix下共有五种I/O模型 1. 阻塞式I/O 2. 非阻塞式I/O 3. I/O复用(select和poll) 4. 信号驱动式I/O(SIGIO) 5. 异步I/O(POSIX的aio_系列函数 ...

  6. java.util.logging.Logger 使用详解

    概述: 第1部分 创建Logger对象 第2部分 日志级别 第3部分 Handler 第4部分 Formatter 第5部分 自定义 第6部分 Logger的层次关系 参考 第1部分 创建Logger ...

  7. 无障碍网页设计(WCAG2.0)

    无障碍化是指无论健全人还是残疾人,年轻人还是老年人都可以平等地获取互联网上的信息和服务.无障碍化网站建设不单可以增加网站的受益群体,更是一个有情怀.有担当的互联网企业的责任,也是一个互联网从业人员应该 ...

  8. Eclipse 常用用法

    搞了很多年的.NET,  最近开始搞Eclipse.    刚开始使用 Eclipse,  发现  Eclipser 远没有Visual Stuido  强大.  所以先把Eclipse常用的用法总结 ...

  9. Yii2 主从 数据库

    配置方法 参考资料:http://www.linuxidc.com/Linux/2015-07/120134.htm 读写分离(Read/Write Splitting). 1.原理:让主数据库(ma ...

  10. 【0 - 1】OC内存管理

    一.内存管理概述 垃圾回收机制(GC):由系统管理内存,程序员不需要管理. OC中的垃圾回收:在OC2.0版加入垃圾回收. OC与iOS:OC有垃圾回收机制,但是iOS屏蔽了这个功能.原因:iOS运行 ...