zabbix 由于历史数据过大, 因此导致磁盘空间暴涨,  下面是解决方法步骤:

一、分析数据库:

1. 统计数据库中每个表所占的空间:

mysql> SELECT table_name AS "Tables",
  round(((data_length + index_length) / 1024 / 1024), 2) "Size in MB"
  FROM information_schema.TABLES
  WHERE table_schema = 'zabbixdb'
  ORDER BY (data_length + index_length) DESC;
+----------------------------+------------+
| Tables | Size in MB |
+----------------------------+------------+
| history_uint | 29417.00 |
| history | 8287.00 |
| events | 2367.67 |
| trends_uint | 1781.91 |
| event_recovery | 1211.33 |
| trends | 548.00 |
| history_str | 381.53 |
| history_text | 58.13 |
| alerts | 46.67 |
| problem | 31.06 |
| items | 25.23 |
| auditlog | 16.53 |
| items_applications | 6.20 |
| triggers | 5.31 |
| item_discovery | 5.30 |
| housekeeper | 3.52 |
| functions | 3.33 |
| graphs | 2.23 |
| graphs_items | 2.17 |
| item_preproc | 1.88 |
| auditlog_details | 1.69 |
| images | 1.53 |
| profiles | 0.80 |
| trigger_discovery | 0.42 |
| applications | 0.38 |
| application_template | 0.38 |
| trigger_depends | 0.33 |
| graph_discovery | 0.25 |
| hosts | 0.20 |
| item_condition | 0.16 |
| sessions | 0.14 |
| widget_field | 0.11 |
| dservices | 0.09 |
| sysmaps_elements | 0.09 |
| sysmaps | 0.08 |
| httptest | 0.08 |
| interface | 0.08 |
| mappings | 0.08 |
| hosts_templates | 0.08 |
| group_prototype | 0.06 |
| hostmacro | 0.06 |
| acknowledges | 0.06 |
| host_inventory | 0.06 |
| scripts | 0.06 |
| sysmaps_links | 0.06 |
| slides | 0.05 |
| maintenances_groups | 0.05 |
| users_groups | 0.05 |
| dashboard_usrgrp | 0.05 |
| sysmap_usrgrp | 0.05 |
| maintenances | 0.05 |
| dashboard_user | 0.05 |
| actions | 0.05 |
| opgroup | 0.05 |
| sysmap_user | 0.05 |
| httpstepitem | 0.05 |
| config | 0.05 |
| item_application_prototype | 0.05 |
| opcommand_hst | 0.05 |
| services_links | 0.05 |
| host_discovery | 0.05 |
| opcommand_grp | 0.05 |
| service_alarms | 0.05 |
| problem_tag | 0.05 |
| sysmap_element_trigger | 0.05 |
| task | 0.05 |
| drules | 0.05 |
| media | 0.05 |
| optemplate | 0.05 |
| slideshows | 0.05 |
| icon_mapping | 0.05 |
| screens | 0.05 |
| slideshow_usrgrp | 0.05 |
| sysmaps_link_triggers | 0.05 |
| icon_map | 0.05 |
| opmessage_usr | 0.05 |
| maintenances_windows | 0.05 |
| screen_usrgrp | 0.05 |
| application_prototype | 0.05 |
| httptestitem | 0.05 |
| opmessage_grp | 0.05 |
| slideshow_user | 0.05 |
| maintenances_hosts | 0.05 |
| screen_user | 0.05 |
| rights | 0.05 |
| hosts_groups | 0.05 |
| application_discovery | 0.05 |
| httptest_field | 0.03 |
| opmessage | 0.03 |
| event_tag | 0.03 |
| corr_condition_group | 0.03 |
| regexps | 0.03 |
| operations | 0.03 |
| group_discovery | 0.03 |
| users | 0.03 |
| corr_condition | 0.03 |
| opconditions | 0.03 |
| services_times | 0.03 |
| dashboard | 0.03 |
| sysmap_url | 0.03 |
| conditions | 0.03 |
| trigger_tag | 0.03 |
| interface_discovery | 0.03 |
| services | 0.03 |
| sysmap_shape | 0.03 |
| graph_theme | 0.03 |
| autoreg_host | 0.03 |
| corr_operation | 0.03 |
| opcommand | 0.03 |
| sysmap_element_url | 0.03 |
| escalations | 0.03 |
| media_type | 0.03 |
| httpstep_field | 0.03 |
| screens_items | 0.03 |
| httpstep | 0.03 |
| dhosts | 0.03 |
| widget | 0.03 |
| valuemaps | 0.03 |
| expressions | 0.03 |
| dchecks | 0.03 |
| groups | 0.03 |
| usrgrp | 0.03 |
| opinventory | 0.02 |
| proxy_history | 0.02 |
| proxy_dhistory | 0.02 |
| correlation | 0.02 |
| task_remote_command | 0.02 |
| proxy_autoreg_host | 0.02 |
| task_close_problem | 0.02 |
| corr_condition_tagvalue | 0.02 |
| task_acknowledge | 0.02 |
| globalvars | 0.02 |
| corr_condition_tagpair | 0.02 |
| ids | 0.02 |
| globalmacro | 0.02 |
| corr_condition_tag | 0.02 |
| history_log | 0.02 |
| timeperiods | 0.02 |
| task_remote_command_result | 0.02 |
| dbversion | 0.02 |
+----------------------------+------------+
140 rows in set (0.68 sec)

二、清理zabbix一周之前的历史数据:

!/bin/bash
User="zabbixuser"
Passwd="zabbixpass"
Date=`date -d $(date -d "-7 day" +%Y%m%d) +%s` #取7天之前的时间戳
$(which mysql) -u${User} -p${Passwd} -e "
use zabbixdb;
DELETE FROM history WHERE 'clock' < $Date;
optimize table history;
DELETE FROM history_str WHERE 'clock' < $Date;
optimize table history_str;
DELETE FROM history_uint WHERE 'clock' < $Date;
optimize table history_uint;
DELETE FROM history_text WHERE 'clock' < $Date;
optimize table history_text;
DELETE FROM trends WHERE 'clock' < $Date;
optimize table trends;
DELETE FROM trends_uint WHERE 'clock' < $Date;
optimize table trends_uint;
DELETE FROM events WHERE 'clock' < $Date;
optimize table events;
"
5.6以后用alter table table_name engine="InnoDB";

3、添加到系统计划任务:

#remove the zabbix mysql data before  day's ago
* * /usr/local/script/clearzabbix.sh > /usr/local/script/clearzabbix.log

4、另:可以使用truncate命令直接清空数据库:

truncate table history;
truncate table history_uint;
truncate table history_str;
truncate table history_text;
truncate table trends;
truncate table trends_uint;
truncate table events;

如果想要删除表的所有数据,truncate语句要比 delete 语句快

因为 truncate 删除了表,然后根据表结构重新建立它,而 delete 删除的是记录,并没有尝试去修改表。

不过truncate命令虽然快,却不像delete命令那样对事务处理是安全的。

因此,如果我们想要执行truncate删除的表正在进行事务处理,这个命令就会产生退出并产生错误信息。

Zabbix清理历史数据库,缩减表大小的更多相关文章

  1. zabbix清理监控历史mysql数据

    问题描述: 今天同事说有个zabbix监控数据库历史数据越来越多了, 让我帮忙清一下,顺便熟悉练练手,做个笔记 zabbix监控运行一段时间以后,会留下大量的历史监控数据 zabbix数据库一直在增大 ...

  2. mysql单表大小的限制

    mysql单表大小的限制一.MySQL数据库的MyISAM存储 引擎单表大小限制已经不是有MySQL数据库本身来决定(限制扩大到64pb),而是由所在主机的OS上面的文件系统来决定了.在mysql5. ...

  3. 查看mysql数据库表大小和最后修改时间

    查看mysql数据库表相关信息如表大小.修改更新等信息,可以通过以下方式: 一   show table status like ’table_name‘ ; 二 在infortmation_sche ...

  4. mysql查看表大小

    mysql查看表大小 一:命令 show table status like 'table_name'\G; mysql> show table status like 'x'\G; . row ...

  5. [记录]一则清理MySQL大表以释放磁盘空间的案例

    一则清理MySQL大表以释放磁盘空间的案例 一.基本情况: 1.dbtest库554G,先清理st_online_time_away_ds(37G)表的数据,保留半年的数据: 1)删除的数据:sele ...

  6. PostgreSQL 查看单表大小

    1. 在数据库中查单个表 select pg_size_pretty(pg_relation_size('table_name')); 2. 查出并按大小排序 SELECT table_schema ...

  7. postgresql-查看表大小

    drop table tablesize create table tablesize( phone int) create table tablesize( phone text) create t ...

  8. SQL Server 游标运用:查看数据库所有表大小信息

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:运用游标 方法二:运用系统存储过程 方法三:拼接SQL ...

  9. Hash表的表大小

    hash表的出现主要是为了对内存中数据的快速.随机的访问.它主要有三个关键点:Hash表的大小.Hash函数.冲突的解决. 这里首先谈谈第一点:Hash表的大小. Hash表的大小一般是定长的,如果太 ...

随机推荐

  1. 使用MySQL会话变量实现窗口函数

    一.MySQL窗口函数 (1) 序号函数 row_number()在相等的两条记录上随机排序,但序号按照1.2递增,然后后面的序号继续递增为3,中间不会产生序号间隙: rank()/dense_ran ...

  2. c++ 链接mysql:error LNK2019: 无法解析的外部符号

    使用VS2012编译项目报错如下: error LNK2019: 无法解析的外部符号 _mysql_real_connect@32,该符号在函数 _main 中被引用 error LNK2019: 无 ...

  3. Leetcode109. Convert Sorted List to Binary Search Tree有序链表转换二叉搜索树

    给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定的有序链表: [-10 ...

  4. 从大数据到快数据 数据智创未来——2019 CCF大数据与计算智能大赛正式开赛!

    8月17日,以“数据驱动,智创未来”为主题的2019 CCF大数据与计算智能大赛(CCF Computing Intelligence Contest,简称CCF BDCI)全球启动仪式,在北京大学正 ...

  5. 20190716-T1-礼物

    呵呵,我暴力WA了 这个题充分考验了大家对数学的理解(麦蒙大多在胡诌) 但是确实如此啊. 看数据范围想状压.(我额嗯嗯想到暴力?) 然后设出一个可爱的$dp$式(主语当然不是我,是出题人大佬) $f_ ...

  6. mysql 查询条件不区分大小写问题

    转自 http://blog.csdn.net/qishuo_java/article/details/40118937 转自 https://www.cnblogs.com/wuyun-blog/p ...

  7. vagrant简介

    什么是vagrant? 简单理解,就是可以通过Vagrant这个工具管理虚拟机,比如说想创建一个centos环境的虚拟机,不需要安装系统这么麻烦,通过vagrant可以快速创建 官网地址:https: ...

  8. NOIP模拟 6.28

    NOIP模拟赛6.28 Problem 1 高级打字机(type.cpp/c/pas) [题目描述] 早苗入手了最新的高级打字机.最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧. 请为这 ...

  9. 洛谷 1083 (NOIp2012) 借教室——标记永久化线段树 / 差分+二分

    题目:https://www.luogu.org/problemnew/show/P1083 听说线段树不标记永久化会T一个点. 注意mn记录的是本层以下.带上标记的min! #include< ...

  10. Vue--过渡动画实现的三种方式

    一.使用vue的transition标签结合css样式完成动画 <!DOCTYPE html> <html lang="en"> <head> ...