概述:zabbix在运行一段时间过后,会留下大量的历史数据,我们会发现zabbix的数据库会一直越来越大。运行三个月的zabbix的数据库会达到10个G左右根据监控的服务器和交换机数量有关以及模板里面的监控项和数据。
zabbix里面最大的就是表就是历史记录的表了,网上很多人都是在写全部清空这些表的数据,其实我们可以按照时间来删除里面的数据。
里面最大的表就是“history”和history_unit两个表
zabbix里面的时间是用的时间戳方式记录,我们可以转换一下,然后根据时间戳来删除;

比如要删除2014年的1月1号以前的数据

1、先将标准时间转换为时间戳

#date +%s -d “2014-01-01 00:00:01”
1388505601
2.mysql清理数据

1
2
3
4
mysql> DELETE FROM `history_uint` WHERE `clock` < 1388505601;

mysql> optimize table history_uint;

注:执行过第二行命令之后可能会需要很长的一段时间,中间不要中断,否则容易丢失数据。
这是比较实用的按照时间段删除历史数据,也有方法可以全部清除历史监控数据
zabbix清空历史记录mysql数据库操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql -uroot -p 输入mysql密码
use zabbix;
truncate table history;
optimize table history;
truncate table history_str;
optimize table history_str;
truncate table history_uint;
optimize table history_uint;
truncate table trends;
optimize table trends;
truncate table trends_uint;
optimize table trends_uint;
truncate table events;
optimize table events;

注意:此操作会清空zabbix所有历史监控数据,请操作之前备份好数据库!