zabbix 数据库数据清理

背景
由于zabbix历史数据过大,导致占用过多磁盘空间,需清理数据,释放空间

1、查看表占用空间情况

SELECT table_name AS "Tables",
round(((data_length + index_length) / 1024 / 1024), 2) "Size in MB"
FROM information_schema.TABLES
WHERE table_schema = ‘zabbix‘
ORDER BY (data_length + index_length) DESC;

2、分析表数据
从上面较大的表看,主要集中history_unit,history两张表,而且是存储历史数据,
a、查看history_uint和history数据表结构,可以根据clock时间戳来进行数据删除

MariaDB [zabbix]> desc history_uint;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| itemid | bigint(20) unsigned | NO   | MUL | NULL    |       |
| clock  | int(11)             | NO   |     | 0       |       |
| value  | bigint(20) unsigned | NO   |     | 0       |       |
| ns     | int(11)             | NO   |     | 0       |       |
+--------+---------------------+------+-----+---------+-------+
4 rows in set (0.26 sec)

MariaDB [zabbix]> desc history;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| itemid | bigint(20) unsigned | NO   | MUL | NULL    |       |
| clock  | int(11)             | NO   |     | 0       |       |
| value  | double(16,4)        | NO   |     | 0.0000  |       |
| ns     | int(11)             | NO   |     | 0       |       |
+--------+---------------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

MariaDB [zabbix]>

3、清理表数据,建议停止zabbix server服务。
a、取30天前时间戳

[[email protected] ~]#
[[email protected] ~]# date +%s -d "Jun 4, 2019 00:00:00"
1559577600
[[email protected] ~]#

b、按照时间戳删除数据,并优化

delete from history where clock < 1559577600;
optimize table history

自动删除历史数据脚本:
#!/bin/bash
User="zabbix"
Passwd="zabbix"
Date=date -d $(date -d "-30 day" +%Y%m%d) +%s #取30天之前的时间戳
$(which mysql) -u${User} -p${Passwd} -e "
use zabbix;
DELETE FROM history WHERE ‘clock‘ < $Date;
optimize table history;
DELETE FROM history_uint WHERE ‘clock‘ < $Date;
optimize table history_uint;

原文地址:https://blog.51cto.com/7585527/2417012

时间: 2024-11-01 18:13:14

zabbix 数据库数据清理的相关文章

如何从Zabbix数据库中获取监控数据

做过Zabbix的同学都知道,Zabbix通过专用的Agent或者SNMP收集相关的监控数据,然后存储到数据库里面实时在前台展示.Zabbix监控数据主要分为以下两类: 历史数据:history相关表,从history_uint表里面可以查询到设备监控项目的最大,最小和平均值,即存储监控数据的原始数据. 趋势数据:trends相关表,趋势数据是经过Zabbix计算的数据,数据是从history_uint里面汇总的,从trends_uint可以查看到监控数据每小时最大,最小和平均值流量. Zabb

根据字段条件清理mysql数据库数据

根据字段条件清理mysql数据库数据 背景 线上某个数据库有1000个分库的DB,磁盘告警,每个库的大小都不是很大但是加起来就非常大了.手动根据时间字段来清理数据不太现实,于是决定写脚本来删除指定时间以前的数据. 脚本: #/bin/bash ##auth by qunyingliu ## files in xxx     HOST=$1 DBPORT=3306 USER="xxxx" PASSWORD="xxxx" DB_SKIP_CLEAN="mysq

从Zabbix数据库中提取内存采集的数据,做内存使用率计算

背景需求很简单,分析所有的设备的内存使用率,看那些设备的内存不够用是否需要加内存... 下面的脚本逻辑,就是通过提取zabbix数据库中的hostid,在提取itemid.. 然后通过item name过滤提取趋势数据,获取一天中最大的内存总数和最小可用内存 然后在计算在一天中最小内存可用率的设备, 下面的是通过free来计算的,当然也可以通过used来计算了... #!/usr/bin/ruby $KCODE = 'utf8' require 'mysql' db = Mysql.real_c

mysql优化-针对zabbix数据库

mysql优化: 修改mysql的root账号的密码: 先停止mysql服务: service mysqld stop 使用--skip-grant-tables忽略密码启动: mysqld_safe --skip-grant-tables & 进入mysql修改密码: use mysql update user set password=password('mysql') where user='root'; flush privileges; 查看表占用空间情况: select table_

zabbix数据库优化脚本

分享一个zabbix数据库的优化脚本,适合2.0版本. 对history,hostory_uint按日分区,trends,trends_uint按月分区: 关闭Houserkeeper: vim zabbix_server.conf DisableHousekeeper=1 对history,hostory_uint每日建立第二天的分区并删除45天前的分区 对trends,trends_uint每月20号建立下一个月的分区,并删除12个月前的分区 时间可以自己修改 由于events表的大小对仪表

新浪微博爬取笔记(4):数据清理

数据清理的部分很多,其实爬数据的过程中步骤的间隔也要做数据清理,都是很琐碎繁杂的工作.总结经验的话,就是: 1.一定要用数据库存储数据 (我因为还不太会数据库,为了“节省学习时间”,所有数据项都用txt存储,直到最后出现了多个种类之间查找,文件夹树变得比较复杂,才觉得当初即使使用MySQL也会提高效率) 2.处理异常的语句不嫌多 3.处理数据的脚本最好打包成函数,尽量减少运行前需要改源码的机会,变量从外部传递 4.工作流程要整体写出来画成图方便查找,步骤和文件多了会有点混乱 以处理时间为例: 我

zabbix 数据库更换 TokuDB 引擎

zabbix 更换 TokuDB 过程(我用的是percona db): wget http://www.percona.com/redir/downloads/Percona-Server-5.6/LATEST/binary/redhat/6/x86_64/Percona-Server-tokudb-56-5.6.19-rel67.0.el6.x86_64.rpm  yum install jemalloc rpm -ivh Percona-Server-tokudb-56-5.6.19-re

zabbix数据库迁移

一.环境 192.168.1.163 zabbix 由于与线上业务争资源,影响比较大,故需要迁移,而现在是lamp部署 192.168.1.190 把原有zabbix数据库迁到这个台机器上3306上 二.163机器步 1.导出zabbix数据表结构 [[email protected] ~]# mysqldump -uroot -pdy2013 -P3308 -h127.0.0.1 --opt -d zabbix > zabbix.sql 2.把文件传到190机器上,以便恢复 [[email p

Python+Mysql生成zabbix统计数据

先大概了解一下zabbix数据库结构: 1.groups表 可以根据组名查到组ID 2.找到组ID就可以根据组ID找出这个组下面的所有服务器的ID,这个关系在hosts_groups表里面: 3.有了hostid就可以在hosts表里查看这台机器的基本信息了: items表则可以根据hostid查出这台服务器的所有监控项: 4.终于在items表查到itemid,利用这个itemid在trends和trends_uint这两个表中统计出我们需要的数据 我python水平挺菜的,很多面向对象的功能