问题描述:

今天同事说有个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数据的更多相关文章

  1. zabbix的简单操作(监控客户端MySQL数据包库)

    环境准备: 192.168.175.102    zabbix服务端 192.168.175.106    zabbix客户端(监控MySQL) 命令:iptables -F        #清空防火 ...

  2. zabbix日常监控项mysql(七)

    参考文档: percona官方文档:https://www.percona.com/doc/percona-monitoring-plugins/LATEST/zabbix/index.html za ...

  3. zabbix之 zabbix模板监控mysql

    zabbix中默认有mysql的监控模板.默认已经在zabbix2.2及以上的版本中.模板名称:Template App MySQL.如果没有则要去zabbix官方下载 url:https://zab ...

  4. Zabbix 配置监控 & 触发器

    Zabbix 自定义监控 zabbix-agent 获取数据,然后定义,交给 zabbix-server 端 Zabbix 配置监控项 监控的内容 # 监控服务器登录用户的数量 [root@web01 ...

  5. zabbix添加监控Mysql

    起因:zabbix自带的mysql监控模板直接使用会显示“不支持的”因为key的值是通过Mysql用户查看"show global status"信息或者用mysqladmin命令 ...

  6. 带你了解zabbix如何监控mysql主从到报警触发

    本章博客我们一起来聊一聊如何监控mysql数据库主从状态? 思路梳理: 1)首先我们都知道,判断Mysql主从是否正常,是通过主从上面的SQL和IO线程都为yes状态判断(通过awk取值,grep过滤 ...

  7. Linux监控-历史细项数据回溯

    Linux监控数据回溯 网络服务监控 应用场景: lvs 后端内网端机器网络波动监控: nginx 80.443端口连接监控: mysql 连接监控 以上为抛砖引玉,根据环境安装到监控工具(open ...

  8. zabbix使用percona的mysql监控模板监控

    安装第三方插件仓库源: [root@iZ9j3yrx43sb5sZ ~]# yum install https://www.percona.com/redir/downloads/percona-re ...

  9. Zabbix Server 自带模板监控无密码MySQL数据库

    Zabbix Server 自带模板监控无密码MySQL数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.安装MariaDB 1>.安装MariaDB  [root ...

随机推荐

  1. Redis连接池-Java代码

    1.JedisUtil类 2.测试类 3.测试日志(模拟出现竞争情况) import org.apache.log4j.Logger; import redis.clients.jedis.Jedis ...

  2. 利用Python与selenium自动化模拟登陆12306官网!

    近年来,12306的反爬越来越来严重,从一年前的 获取tk参数后到现在增加了 JS.CSS等加密方式! 目前大部分人利用的登陆方式都是利用selenium ,此文也不例外. 环境:        Wi ...

  3. ThinkPHP5 支付宝 电脑与手机支付扩展库

    ThinkPHP5 电脑与手机支付扩展库(2017年9月18日) 使用说明 在默认配置情况下,将文件夹拷贝到根目录即可, 其中extend目录为支付扩展目录, application\extra\al ...

  4. asp.net core 3.0 更新简记

    asp.net core 3.0 更新简记 asp.net core 3.0 更新简记 Intro 最近把活动室预约项目从 asp.net core 2.2 更新到了 asp.net core 3.0 ...

  5. 工业搬运机器人(AGV)为什么要选择视觉导航

    在智能制造和仓储物流领域,搬运机器人的需求量在逐年上升.机器人(AGV)的种类千差万别,如何选择成为需求方头痛的问题. 本文将从客户关心的多个方面,对市面上的常见的工业级导航方案做一个比较. 搬运机器 ...

  6. 未来实现API管理系统的几个关键词

    下面将通过几个关键词的形式说明API管理的重要性和未来的实现方式. 1.生命周期管理 在整个API生命周期中更深入地集成所有工具将进一步提高生命周期循环的速度,而且更重要的是提供满足消费者需求的API ...

  7. Windows下如何调试驱动程序

    Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 一.配置Windbg使用双机调试 win10中“windbg+vm ...

  8. 自己写的Weblogic的poc

    """ 暂时只试用于Linux,先试试用一下反弹shell CVE-2017-10271的EXp """ import requests i ...

  9. PHP 利用闭包偷窥马对人类的想法

    <?php /** * reference:http://www.php.net/manual/en/reflectionmethod.getclosure.php * Learn this a ...

  10. snkrs web端分析,canvas中的fingerpint

    snkrs web端分析,canvas中的fingerpint 代码如下 (()=>{ const canvas = document.createElement("canvas&qu ...