目录

  • Zabbix 数据清理的一系列操作

    • 一、问题
    • 二、解决办法

Zabbix 数据清理的一系列操作

基本信息:

Zabbix 版本 4.0.9

MySQL 版本 5.5

一、问题

我们将 Zabbix 的数据存放在测试环境的 RDS (阿里云)上,但是这个 RDS 购买的时候就只有 10G 的存储,所以监控没有几个月,我们的数据库就报存储空间不足的预警了。

首先进行排查,是哪些表占用的存储空间比较多呢,我们发现主要是 historyhistory_uint 这两个表。占用空间最大的是 history_uint表。

那么这两个表分别是存储什么内容呢?

history_uint

该表存储的是监控项的无符号整型的数据。

该数据的保存时长,取决于在监控项设置的 历史数据保留时长。

CREATE TABLE `history_uint` (`itemid` bigint(20) unsigned NOT NULL,`clock` int(11) NOT NULL DEFAULT '0',`value` bigint(20) unsigned NOT NULL DEFAULT '0',`ns` int(11) NOT NULL DEFAULT '0',KEY `history_uint_1` (`itemid`,`clock`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  • itemid 是 监控项 ID

  • clock 是数据的时间的时间戳(unix)

  • value 是监控项对应的数据值

  • ns 是 纳秒时间值(小于1s的值),

监控项的精确实际收集时间,是由 clock + ns 组成的。

history

这个表保存的是浮点型的。

history_str 等保存的是 字符型数据。这些都是我们在设置监控项的对应的信息类型决定的。

该数据的保存时长,取决于在监控项设置的 历史数据保留时长。

扩展

trends 是保存了趋势数据用的,和 history 不同的是,trends 表仅仅保存了
小时平均的值。所以 trends 表也有很多的类型,对应history。

二、解决办法

临时解决办法

针对这个问题,我们临时的解决办法就是,就删除 history_uinthistory 的一些历史数据。

首先获取要删除时间的一个时间戳,比如我们要删除 2019年 9月10号 11点00之前的数据。那么这个时间对应的时间戳是 1568084400.

我们进行删除 history_uint 里的数据,这里需要注意一个点,如果我们的数据量比较多的话,我们建议分多个时间段进行删除,比如我们数据库里面由 2018年 10月份到2019年10月份的数据 ,那么我们可以将里面的数据分成4个阶段进行删除,从 2018年10月份到 2019年1月份,从 2019年1月份到 2019年4月份,这样就可以避免一次性删除数据过多导致数据库的负载比较大。(或者也可以使用 limit 10000)

delete history_uint

delete  from history_uint  where  clock < 1568084400  LIMIT 10000;

delete history

delete  from history  where  clock < 1568084400  LIMIT 10000;

在执行完上面的删除操作之后,我们发现一个很异常的事情发生了。

就是我们删除了那么多的数据,但是数据的储存空间是没有减少的。反而增加了(这不是由于新增加的数据导致,后面觉得是阿里云的显示不准确).

原因是 :

对于delete from table_name where xxx带条件的删除, 不管是 innodb 还是 MyISAM 都不会释放磁盘空间.

为什么delete where 删除空间不会减少? 举个例子,一个公司有 100个工位,有100个人坐着,当有50个人离职了,但是他们的工位还是存在的,只有在把工位拆除了才会不存在, 它们的工位也是可以安装新入职的员工的.

所以我们需要进行 OPTIMIZE TABLE 操作,进行释放空间.

注意: 在optimize table '表名'运行过程中,MySQL会锁定表。

OPTIMIZE TABLE history_uint;
OPTIMIZE TABLE history;

在 RDS 操作完之后, 我们大概需要过几分钟才能在控制台看到我们的实际储存信息.

借鉴内容: https://blog.csdn.net/weixin_40596063/article/details/82978736

1、drop table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM ,不保留表结构,;
2、truncate table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM 。truncate table保留表结构,删除方式类似drop table;
3、delete from table_name删除表的全部数据,对于MyISAM 会立刻释放磁盘空间 ,InnoDB 不会释放磁盘空间;
4、对于delete from table_name where xxx带条件的删除, 不管是innodb还是MyISAM都不会释放磁盘空间;
5、对于delete操作(或带条件的delete)需要释放空间,在delete以后使用optimize table table_name 会立刻释放磁盘空间。不管是innodb还是myisam ;所以要想达到释放磁盘空间的目的,delete以后执行optimize table 操作。

对于delete之后未释放的空间。在insert时无需新开辟空间。会使用保留空间 。

永久解决办法

  • 数据量过多是由于我们保存的历史数据的时间过长,我们可以设置 历史数据的保留时长,将该值设置的更短一些,这样数据量也就随着减少了。
  • 扩大数据库的储存空间。

转载于:https://www.cnblogs.com/operationhome/p/11518973.html

Zabbix 数据清理相关推荐

  1. Python数据清理终极指南(2020版)

    作者 | Lianne & Justin 译者 | 陆离 出品 | AI科技大本营(ID:rgznai100) 一般来说,我们在拟合一个机器学习模型或是统计模型之前,总是要进行数据清理的工作. ...

  2. 独家 | 用于数据清理的顶级R包(附资源)

    作者:Anna Kayfitz,CEO of StrategicDB Corp 翻译:顾宇华 校对:杨光 本文约1700字,建议阅读5分钟. 确保数据干净整洁应该始终是数据科学工作流程中首要也是最重要 ...

  3. 臭名昭著的数据清理和准备问题,如何利用AI完美解决?

    2020-03-18 17:01:00 全文共3299字,预计学习时长10分钟 来源:Pexels 人工智能和深度学习在处理非结构化数据方面表现突出,从自然语言理解和自动知识库构建到图像和视频的分类和 ...

  4. python 导出数据并发邮件_Python自动化导出zabbix数据并发邮件脚本

    Zabbix没有报表导出的功能,于是通过编写脚本导出zabbix数据并发邮件.效果如下: 下面是脚本,可根据自己的具体情况修改: #!/usr/bin/python` `#coding:utf-8` ...

  5. 数据挖掘-数据清理过程

    数据清理-数据清理过程 数据清理过程的第一步是偏差检测(discrepancy detection). 导致偏差的因素有很多,包括: 具有很多可选字段的设计糟糕的输入表单 人为的数据输入错误 有意的错 ...

  6. pandas中drop用法_python进行数据清理之pandas中的drop用法

    好久好久没有更新博客了,之前自学的估计也都忘记差不多了.由于毕业选择从事的行业与自己的兴趣爱好完全两条路,心情也难过了很久,既然入职了就要好好干,仍要保持自己的兴趣,利用业余时间重拾之前的乐趣. 从基 ...

  7. python数据清理的实践总结_Python数据清洗实践

    原标题:Python数据清洗实践 DATA CLEANING WITH PYTHON 作者 | Balogun Omobolaji 翻译 | 酱番梨.祝弟弟基督教 校对 | Pita 审核 | 约翰逊 ...

  8. Spark Streaming揭秘 Day16 数据清理机制

    Spark Streaming揭秘 Day16 数据清理机制 今天主要来讲下Spark的数据清理机制,我们都知道,Spark是运行在jvm上的,虽然jvm本身就有对象的自动回收工作,但是,如果自己不进 ...

  9. 数据清理最终实现了自动化

    苹果 | GOOGLE | 现货 | 其他 (APPLE | GOOGLE | SPOTIFY | OTHERS) Editor's note: The Towards Data Science po ...

  10. 实现klib_使用klib加速数据清理和预处理

    实现klib TL;DRThe klib package provides a number of very easily applicable functions with sensible def ...

最新文章

  1. SQL判断是否存在,还在用 count 操作?试试这条 SQL 语句,性能杠杠的!
  2. 用git进行项目搭建
  3. CSS设置文本字体居中
  4. springboot+swagger传递参数的几种格式
  5. 金九银十中,看看这31道Android面试题
  6. redis watch multi exec 关系
  7. SELinux深入理解
  8. html简单父子页面,js 的 iframe 父子页面通信的简单方法
  9. Python 中 xpath 语法 与 lxml 库解析 HTML/XML 和 CSS Selector
  10. chkconfig: 2345 20 80
  11. 不懂这37个数据中心术语,怎么混数据圈饭局!
  12. 【会议/期刊】中科院推荐计算机领域人工智能方向会议和期刊列表
  13. 《机器学习实战》学习笔记
  14. OC中关于NSDate详解及获取当前时间等常用操作
  15. MAC编译OpenJDK8:ld: library not found for -lstdc++(独家解决办法)
  16. Android刷机Windows10,蓝魔i9s Win10+Android双系统的刷机教程及固件下载
  17. 机器人学相关书籍(长期更新)
  18. 19-备忘录模式Quarkus实现
  19. 2021数据分析师薪资大PK
  20. 网上书店黑盒测试_网上书店管理系统

热门文章

  1. 探讨SQL Server中Case 的不同用法
  2. 19. 删除链表的倒数第N个节点【双指针经典应用】详解
  3. inDesign教程,如何设置打印出血?
  4. InDesign教程,如何对齐和调整对象位置?
  5. 苹果mac预览应用使用方法
  6. iOS开发之Xcode项目文件自动展开问题的解决办法
  7. 快速切换Mac系统设置One Switch
  8. MWeb Pro for Mac(静态博客生成软件)
  9. Navicat提示“failed to save password error code”的解决办法
  10. 关于微信公众号的测试