zabbix删除历史数据 mysql 表自动分区、删除

----2016年终总结 二

zabbix清理历史数据是个比较蛋疼的问题,尤其在监控数据较多时,一方面无法彻底释放历史数据空间,一方面数据库删除速度是个瓶颈,housekeeper进程长时间占用过高。

如果对数据库中的history_uint表进行分区,则可以解决以上问题。但此方法不利于数据库的规范管理,仅适用于小规模的监控场景。同时,定时脚本本身也是挖坑,这只是个临时解决方案。

DATA_STAMP_ONE_DAY_LONGTH=86400#一天的时间戳跨度
LOGFILE="/var/log/zabbix/partition.log"
HISTORY_PERIOD=7 #历史纪录保留天数
DATA_TODAY=`date +%Y%m%d` #获取今天时间
DATA_STAMP_TODAY=`date --date=$DATA_TODAY +%s` #今天的时间戳 ((HISTORY_TIMESTAMP_LONGTH=$DATA_STAMP_ONE_DAY_LONGTH * $HISTORY_PERIOD)) #一个周期的时间戳长度
((DATA_STAMP_TOMORROW=$DATA_STAMP_TODAY + $DATA_STAMP_ONE_DAY_LONGTH)) #第二天的时间戳
((DATA_STAMP_HISTORY=$DATA_STAMP_TOMORROW - $HISTORY_TIMESTAMP_LONGTH)) #一个周期前的时间戳 DATA_HISTORY=`date -d @$DATA_STAMP_HISTORY +"%Y%m%d"` #一个周期前的日期
DATA_TOMORROW=`date -d @$DATA_STAMP_TOMORROW +"%Y%m%d"` #第二天的日期 echo ' ' >>$LOGFILE #创建第二天使用的分区
mysql -u$USER_NAME -p$PASSWORD -D zabbix -e "ALTER TABLE \`history_uint\` ADD PARTITION (PARTITION p$DATA_TOMORROW VALUES LESS THAN ($DATA_STAMP_TOMORROW) ENGINE = InnoDB);" 2> /tmp/partition_temp_log
if [ $? -eq 0 ];then
echo "SUCCESS! CREATE PARTITION p$DATA_TOMORROW at `date`" >> $LOGFILE
else
echo "FAILED! CREATE PARTITION p$DATA_TOMORROW at `date`" >> $LOGFILE
echo `cat /tmp/partition_temp_log` >> $LOGFILE
fi #删除一个周期前的分区
mysql -u$USER_NAME -p$PASSWORD -D zabbix -e "ALTER TABLE \`history_uint\` DROP PARTITION p$DATA_HISTORY;" 2> /tmp/partition_temp_log
if [ $? -eq 0 ];then
echo "SUCCESS! DROP PARTITION p$DATA_HISTORY at `date`" >> $LOGFILE
else
echo "FAILED! DROP PARTITION p$DATA_HISTORY at `date`" >> $LOGFILE
echo `cat /tmp/partition_temp_log` >> $LOGFILE
fi

zabbix使用mysql数据库 对表分区的更多相关文章

  1. 删除mysql数据库中表分区数据

    删除mysql数据库中表分区数据 zabbix 几个大表创建了分区,由于磁盘空间告警,特将3月前的分区给予删除. 1.查看表的数据占用磁盘空间情况 2.登录mysql中,查看表的分区情况. 3.删除表 ...

  2. zabbix实现mysql数据库的监控(四)

    前面介绍的内容都是用第三方开发好的插件进行mysql监控的,可能有些我们关心的监控内容并不在其中,这时一种常用的方法就是定义我们自己的脚本并将它整合到zabbix中,从而在原有监控的基础上进行有力的补 ...

  3. zabbix实现mysql数据库的监控(三)

    上面一章“zabbix实现mysql数据库的监控(二)”使用MPM来监控mysql,但是遇到安装问题始终解决不了,这里改用percona-monitoring-plugins进行zabbxi上监控my ...

  4. Linux环境下修改MySQL数据库对表名大小写不敏感

    Linux系统中MySQL对数据库名称和表名是大小写敏感的,这就导致了一些麻烦,虽然已经建立了表和数据,但因为大小写导致无法找到表. MySQL数据库对表名大小写不敏感的设置方法如下: 1.查看MyS ...

  5. CentOS 6.3下Zabbix监控MySQL数据库参数

    系统环境:CentOS 6.3 x64  http://www.linuxidc.com/Linux/2012-12/76583.htm mysql:    mysql-5.6.10 http://w ...

  6. MySQL数据库表分区功能详解

    1.什么是表分区? mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件,一个是frm存放表 ...

  7. mysql数据库表分区详解(数量过大的数据库表通过分区提高查询速度)

    这篇文章主要介绍了MySQL的表分区,例如什么是表分区.为什么要对表进行分区.表分区的4种类型详解等,需要的朋友可以参考下 一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysq ...

  8. Zabbix检测Mysql数据库的主从同步

    在高并发网站架构中,MySQL数据库主从同步是不可或缺的,不过经常会发生由于网络原因或者操作错误,MySQL主从经常会出现不同步的情况,那么如何监控MySQL主从同步,也变成检测网站正常运行的重要环节 ...

  9. zabbix实现mysql数据库的监控(二)

    上章我们把zabbix的服务端和客户端都部署完成了,本章接着进行两部分的设置: 1  添加对mysql数据库主机的监控 2  添加对mysql数据库的监控 一.对数据库服务器主机监控 1 创建主机 步 ...

随机推荐

  1. Socket通信中AF_INET 和 AF_UNIX域的区别

    转载:http://blog.csdn.net/sandware/article/details/40923491 1.  AF_INET域socket通信过程 典型的TCP/IP四层模型的通信过程. ...

  2. 【Beta阶段】第六次scrum meeting

    Coding/OSChina 地址 1. 会议内容 学号 主要负责的方向 昨日任务 昨日任务完成进度 接下去要做 99 PM 着手联网功能 100% 配合100完成联网功能 100 DEV 完善服务器 ...

  3. 201521044091《java程序设计》第四次总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.11.2 使用常规方法总结其他上课内容 Object是所有对象类的父类,而toString方法只有可以转换为字符串的类型对象才可 ...

  4. 201521123009《Java程序设计》第14周学习总结

    1. 本周学习总结 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己的学号.姓名) 在自己建立的数据库上执行常见SQL语句(截图) - ...

  5. 201521123029《Java程序设计》第十一周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synch ...

  6. CentOS克隆机器步骤,图文教程

    在上一篇文章中,主要介绍了CentOS的装机步骤,这一篇文章主要介绍如何从一台装好的CentOS克隆出另一台机器,并且配置好网络. 首先被克隆的CentOS需要关机, 右键点击被克隆的CentOS-& ...

  7. 磁盘管理之inode与block

    索引式文件系统 什么是inode? Inode其实就是索引号,便于我们寻找我们文件所存储的数据块block,索引式文件系统在查找信息,读写操作上都比原来的文件系统要快,我们可以通过inode中记录的b ...

  8. JavaEE学习路线

    针对很多初识Java者,对如何学习Java.如何学好Java很迷茫,最近刚把JavaEE的东西学完,把我的学习的经验分享给大家,一条适合大多数人的学习路线. 第一部分:Java语言入门阶段 第二部分: ...

  9. Springboot与Mybatis整合

    最近自己用springboot和mybatis做了整合,记录一下: 1.先导入用到的jar包 <dependency> <groupId>org.springframework ...

  10. JS判斷文件大小

    function findSize(file) { var dom = document.getElementById("file"); var fileSize = dom.fi ...