zabbix清理监控历史mysql数据
问题描述:
今天同事说有个zabbix监控数据库历史数据越来越多了,
让我帮忙清一下,顺便熟悉练练手,做个笔记
zabbix监控运行一段时间以后,会留下大量的历史监控数据
zabbix数据库一直在增大可能会造成系统性能下降,查看历史数据室查询速度缓慢。
zabbix里面最大的表就是history和history_uint两个表,但是我这边查看到history_log表也是最大的。
而且zabbix里面的时间是使用的时间戳方式记录,所以可以根据时间戳来删除历史数据。
解决方法:
1、首先需要关闭zabbix和httpd服务:
我的系统是centos7系统,关闭服务是这种
[root@awza ~]# systemctl stop zabbix-server.service
[root@awza ~]# systemctl stop httpd.service
2、查看数据库目录文件的大小
[root@awza zabbix]# pwd
/database/mysql/zabbix [root@awza zabbix]# ll -h |grep G
total 129G
-rw-rw---- mysql mysql .9G Nov : history.ibd
-rw-rw---- mysql mysql 121G Nov : history_log.ibd
-rw-rw---- mysql mysql .2G Nov : history_uint.ibd
生成一个Unix时间戳,例如想删除2019-05-01号之前的数据(保留19年5月1号以后的监控数据)
或者使用站长时间戳工具生成:https://tool.lu/timestamp/

[root@awza zabbix]# date +%s -d "May 1, 2019 00:00:00"
3、数据库备份(重要的话最好做一下备份)
我这边备份磁盘空间不足,说不用备份,出现了mysqldump: Got errno 28 on write就是磁盘空间不足
[root@awza ~]# /usr/bin/mysqldump -uzabbix -p --triggers --routines --events zabbix > /database/backup/zabbix-mysql-.sql
Enter password:
mysqldump: Got errno on write
4、查询历史表数据数:
[root@awza backup]# mysql -uzabbix -p
Enter password: MariaDB [(none)]> use zabbix MariaDB [zabbix]> select max(itemid) from history;
+-------------+
| max(itemid) |
+-------------+
| |
+-------------+
row in set (0.00 sec) MariaDB [zabbix]> select max(itemid) from history_uint;
+-------------+
| max(itemid) |
+-------------+
| |
+-------------+
row in set (0.00 sec) MariaDB [zabbix]> select max(itemid) from history_log;
+-------------+
| max(itemid) |
+-------------+
| |
+-------------+
row in set (0.00 sec)
5、按时间戳清理监控历史数据:
这边清理相关表按照历史表的大小来清理,根据(2、查看数据库目录文件的大小)
第一种清理方法:
use zabbix;
MariaDB [zabbix]> delete from history where clock < ;
Query OK, rows affected (41.70 sec) MariaDB [zabbix]> delete from history_uint where clock < ;
Query OK, rows affected ( min 51.22 sec) MariaDB [zabbix]> delete from history_log where clock < ;
ERROR (HY000): The total number of locks exceeds the lock table size ##注意:这边时间戳按照自己的条件写,1556640000这个是我前面按照2019--01计算出来的时间戳 这边删除第三个表的时候,因为数据量太大,导致报错:
错误1206(HY000):锁的总数超过了锁表的大小
这个表也不重要,所以就执行下面的truncate命令来清理
第二种清理方法:
truncate table history;
optimize table history;-------------------------------------------------------
truncate table history_log;
optimize table history_log;
-------------------------------------------------------
truncate table history_uint;
optimize table history_uint; 注意:这些命令会把zabbix所有的监控数据清空,操作前注意备份数据库 truncate是清空整张表,然后根据表结构重新建立,delete删除的是记录的数据没有修改表 truncate执行删除比较快,但是在事务处理安全性方面不如delete 如果我们执行truncate的表正在处理事务,这个命令退出并会产生错误信息
MariaDB [zabbix]> optimize table history;
+----------------+----------+----------+-------------------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+----------------+----------+----------+-------------------------------------------------------------------+
| zabbix.history | optimize | note | Table does not support optimize, doing recreate + analyze instead |
| zabbix.history | optimize | status | OK |
+----------------+----------+----------+-------------------------------------------------------------------+
rows in set ( min 4.03 sec)
6、开启服务
[root@awza database]# systemctl start zabbix-server.service
[root@awza database]# systemctl start httpd.service
注意提示:
当你删除数据时,mysql并不会回收已删除的数据所占据的存储空间,以及索引位。
而是空在那里,而是等待新的数据来弥补这个空缺,这样就有一个缺少,如果一时半会,没有数据来填补这个空缺,那这样就太浪费资源了。
所以对于写比较频繁的表,要定期进行optimize,看实际情况而定了,所以删除了历史数据,可以使用optimize来回收存储空间。
zabbix清理监控历史mysql数据的更多相关文章
- zabbix的简单操作(监控客户端MySQL数据包库)
环境准备: 192.168.175.102 zabbix服务端 192.168.175.106 zabbix客户端(监控MySQL) 命令:iptables -F #清空防火 ...
- zabbix日常监控项mysql(七)
参考文档: percona官方文档:https://www.percona.com/doc/percona-monitoring-plugins/LATEST/zabbix/index.html za ...
- zabbix之 zabbix模板监控mysql
zabbix中默认有mysql的监控模板.默认已经在zabbix2.2及以上的版本中.模板名称:Template App MySQL.如果没有则要去zabbix官方下载 url:https://zab ...
- Zabbix 配置监控 & 触发器
Zabbix 自定义监控 zabbix-agent 获取数据,然后定义,交给 zabbix-server 端 Zabbix 配置监控项 监控的内容 # 监控服务器登录用户的数量 [root@web01 ...
- zabbix添加监控Mysql
起因:zabbix自带的mysql监控模板直接使用会显示“不支持的”因为key的值是通过Mysql用户查看"show global status"信息或者用mysqladmin命令 ...
- 带你了解zabbix如何监控mysql主从到报警触发
本章博客我们一起来聊一聊如何监控mysql数据库主从状态? 思路梳理: 1)首先我们都知道,判断Mysql主从是否正常,是通过主从上面的SQL和IO线程都为yes状态判断(通过awk取值,grep过滤 ...
- Linux监控-历史细项数据回溯
Linux监控数据回溯 网络服务监控 应用场景: lvs 后端内网端机器网络波动监控: nginx 80.443端口连接监控: mysql 连接监控 以上为抛砖引玉,根据环境安装到监控工具(open ...
- zabbix使用percona的mysql监控模板监控
安装第三方插件仓库源: [root@iZ9j3yrx43sb5sZ ~]# yum install https://www.percona.com/redir/downloads/percona-re ...
- Zabbix Server 自带模板监控无密码MySQL数据库
Zabbix Server 自带模板监控无密码MySQL数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装MariaDB 1>.安装MariaDB [root ...
随机推荐
- hadoop入门之海量Web日志分析 用Hadoop提取KPI统计指标
转载自:http://blog.fens.me/hadoop-mapreduce-log-kpi/ 今天学习了这一篇博客,写得十分好,照着这篇博客敲了一遍. 发现几个问题, 一是这篇博客中采用的had ...
- layload.js的使用
网上有人反映说lazyload只是效果好看并没有实现真正的懒加载,在后台仍然是把页面上的所有图片下了一遍,只不过是先把图片隐藏并在窗口向下滚动时再逐一显示出来罢了.lazyloag3经测试这个问题已经 ...
- 手把手教你如何在window下将jenkins+allure集成生成的测试报告通过jenkins配置邮箱自动发送-04(非常详细,非常实用)
简介 上一篇生成测试报告,小伙伴们和童鞋们就又问道,测试报告已经生成了,怎么发送给相关的负责人了?小伙伴们和童鞋们不要着急,听宏哥慢慢给你道来,心急吃不了热豆腐哈.今天这篇文章宏哥就给小伙伴和童鞋们来 ...
- http post 请求,带参数,带请求头
#!/usr/bin/env python # -*- coding: utf-8 -*- import requests import json url = 'http://............ ...
- python编程基础之十五
二维列表 l1 = [[1, 2, 3], [4, 5, 6]] print(l1[0][0]) 列表负值 列表复制为两种:深复制,浅复制 浅复制:只复制容器,容器里的元素不产生副本,只是技术引用增加 ...
- Java11月9日的动手动脑
Java动手动脑 请自行编写代码测试以下特性(动手动脑): 在子类中,若要调用父类中被覆盖的方法,可以使用super关键字. 程序源代码: package yanzhengjicheng; class ...
- 引入flask_cache时出现ModuleNotFoundError: No module named 'flask.ext'
环境: centos 7.3 python 3.6 flask 1.0.2 flask-cache 0.13.1 引入flask_cache后运行时,出现以下错误 Traceback (most re ...
- 张高兴的 .NET Core IoT 入门指南:(五)串口通信入门
在开始之前,首先要说明的是串口通信所用到的 SerialPort 类并不包含在 System.Device.Gpio NuGet 包中,而是在 System.IO.Ports NuGet 包中.之所以 ...
- Hydra爆破神器使用
参数详解: -R 根据上一次进度继续破解-S 使用SSL协议连接-s 指定端口-l 指定用户名-L 指定用户名字典(文件)-p 指定密码破解-P 指定密码字典(文件)-e 空密码探测和指定用户密码探测 ...
- Vue 全家桶,深入Vue 的世界
内容简介: Vue 实例上的属性 Vue 生命周期 Vue 数据绑定 computed 计算属性 watch 监听器 Vue 组件 Vue 组件 extend Vue 组件高级属性 Vue 的rend ...