Zabbix清理历史数据库,缩减表大小

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;
View Code
+----------------------------+------------+
| 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)
View Code

二、清理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 7 day's ago
0 3 * * 0 /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删除的表正在进行事务处理,这个命令就会产生退出并产生错误信息。 

猜你喜欢

转载自www.cnblogs.com/ld1977/p/8975543.html