Aktionen

Zabbix Datenbank manuell bereinigen MySQL MariaDB

Aus znilwiki

Changelog:

  • 27.01.2025 erste Version

Vorwort

Bedenkt was Ihr tut! Macht vorher ein Backup und/oder Snapshot! Kontrolliert was passiert über das Webinterface!

Und Geduld! Unter umständen kann das löschen der Einträge einige zeit dauern. Minuten. Stunden.


Größe der Datenbank prüfen

Quelle: https://www.a2hosting.com/kb/developer-corner/mysql/determining-the-size-of-mysql-databases-and-tables/


Als Datei

Die Datenbankdatei prüfen / Dateigröße im Dateisystem / Platz der auf der Festplatte belegt wird

du -h /var/lib/mysql

Beispielausgabe:

101M    /var/lib/mysql/#innodb_redo
804K    /var/lib/mysql/#innodb_temp
124K    /var/lib/mysql/sys
36K     /var/lib/mysql/mysql
1,6M    /var/lib/mysql/performance_schema
7,6G    /var/lib/mysql/zabbix
14G     /var/lib/mysql

Die Zabbix-Datenbank ist hier also ca. 7,6GB groß.


Innerhalb der Datenbank

MySQL/MariaDB Prompt starten

mysql

und dann folgende Befehle nutzen:
Datenbankgröße in MiB:

SELECT table_schema AS "Database", ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MiB)" FROM information_schema.TABLES GROUP BY table_schema;

Beispielausgabe:

+--------------------+------------+
| Database           | Size (MiB) |
+--------------------+-----------+
| information_schema |       0.00 |
| mysql              |       3.00 |
| performance_schema |       0.00 |
| sys                |       0.02 |
| zabbix             |    5027.05 |
+--------------------+------------+
5 rows in set (0,08 sec)

Alternativ in GiB:

SELECT table_schema AS "Database", ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS "Size (GiB)" FROM information_schema.TABLES GROUP BY table_schema;

Beispielausgabe:

+--------------------+------------+
| Database           | Size (GiB) |
+--------------------+------------+
| information_schema |       0.00 |
| mysql              |       0.00 |
| performance_schema |       0.00 |
| sys                |       0.00 |
| zabbix             |       4.91 |
+--------------------+------------+
5 rows in set (0,00 sec)

Die Datenbank ist also als Datei 7,6GiB groß, innerhalb der Datei sind aber nur 4,9GiB belegt.


Größe der Zabbix-Tabellen anzeigen lassen

MySQL/MariaDB Prompt starten und zur Zabbix-Datenbank wechseln:

mysql
use zabbix;

und dann folgende Befehle nutzen:

SELECT table_name AS "Table", ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)" FROM information_schema.TABLES WHERE table_schema = "zabbix" ORDER BY (data_length + index_length) DESC;

Beispielausgabe:

+----------------------------+-----------+
| Table                      | Size (MB) |
+----------------------------+-----------+
| history_uint               |   2368.05 |
| trends_uint                |   1115.06 |
| history                    |    569.03 |
| trends                     |    535.05 |
| auditlog                   |    172.23 |
| history_text               |    100.02 |
| history_log                |     69.02 |
| events                     |     22.06 |
| alerts                     |     11.95 |
| items                      |     10.33 |
| history_str                |     10.02 |
| event_tag                  |      7.03 |
| images                     |      6.56 |
| event_recovery             |      5.05 |
| functions                  |      3.48 |
| triggers                   |      3.11 |
| item_tag                   |      3.03 |
| item_discovery             |      1.86 |
| item_rtname                |      1.42 |
| item_rtdata                |      1.38 |
| item_preproc               |      0.73 |
| graphs_items               |      0.63 |
| trigger_depends            |      0.58 |
| graphs                     |      0.45 |
| hosts                      |      0.38 |
| valuemap_mapping           |      0.36 |
| trigger_tag                |      0.33 |
| trigger_discovery          |      0.31 |
| widget_field               |      0.23 |
| hosts_groups               |      0.17 |
| item_condition             |      0.17 |
| profiles                   |      0.17 |
| hostmacro                  |      0.16 |
| sysmaps_elements           |      0.16 |
| problem                    |      0.14 |
| config                     |      0.09 |
| event_suppress             |      0.08 |
| host_discovery             |      0.08 |
| hosts_templates            |      0.08 |
| sysmaps                    |      0.08 |
| token                      |      0.08 |
| acknowledges               |      0.06 |
| escalations                |      0.06 |
| graph_discovery            |      0.06 |
| group_prototype            |      0.06 |
| host_hgset                 |      0.06 |
| host_proxy                 |      0.06 |
| httptest                   |      0.06 |
| interface                  |      0.06 |
| lld_override_optemplate    |      0.06 |
| media                      |      0.06 |
| media_type                 |      0.06 |
| report                     |      0.06 |
| report_user                |      0.06 |
| report_usrgrp              |      0.06 |
| role_rule                  |      0.06 |
| scripts                    |      0.06 |
| sysmaps_links              |      0.06 |
| task                       |      0.06 |
| userdirectory_usrgrp       |      0.06 |
| users                      |      0.06 |
| usrgrp                     |      0.06 |
| actions                    |      0.05 |
| autoreg_host               |      0.05 |
| correlation                |      0.05 |
| dashboard                  |      0.05 |
| dashboard_user             |      0.05 |
| dashboard_usrgrp           |      0.05 |
| drules                     |      0.05 |
| dservices                  |      0.05 |
| group_discovery            |      0.05 |
| ha_node                    |      0.05 |
| host_inventory             |      0.05 |
| httpstepitem               |      0.05 |
| httptestitem               |      0.05 |
| icon_map                   |      0.05 |
| icon_mapping               |      0.05 |
| lld_override               |      0.05 |
| lld_override_condition     |      0.05 |
| lld_override_operation     |      0.05 |
| lld_override_optag         |      0.05 |
| maintenances               |      0.05 |
| maintenances_groups        |      0.05 |
| maintenances_hosts         |      0.05 |
| maintenances_windows       |      0.05 |
| mfa_totp_secret            |      0.05 |
| opcommand_grp              |      0.05 |
| opcommand_hst              |      0.05 |
| opgroup                    |      0.05 |
| opmessage_grp              |      0.05 |
| opmessage_usr              |      0.05 |
| optemplate                 |      0.05 |
| proxy                      |      0.05 |
| proxy_dhistory             |      0.05 |
| rights                     |      0.05 |
| service_alarms             |      0.05 |
| service_problem            |      0.05 |
| services_links             |      0.05 |
| sysmap_element_trigger     |      0.05 |
| sysmap_user                |      0.05 |
| sysmap_usrgrp              |      0.05 |
| sysmaps_link_triggers      |      0.05 |
| tag_filter                 |      0.05 |
| user_scim_group            |      0.05 |
| userdirectory_idpgroup     |      0.05 |
| userdirectory_media        |      0.05 |
| users_groups               |      0.05 |
| changelog                  |      0.03 |
| conditions                 |      0.03 |
| config_autoreg_tls         |      0.03 |
| connector                  |      0.03 |
| connector_tag              |      0.03 |
| corr_condition             |      0.03 |
| corr_condition_group       |      0.03 |
| corr_operation             |      0.03 |
| dashboard_page             |      0.03 |
| dchecks                    |      0.03 |
| dhosts                     |      0.03 |
| event_symptom              |      0.03 |
| expressions                |      0.03 |
| globalmacro                |      0.03 |
| graph_theme                |      0.03 |
| hgset                      |      0.03 |
| hgset_group                |      0.03 |
| host_tag                   |      0.03 |
| hstgrp                     |      0.03 |
| httpstep                   |      0.03 |
| httpstep_field             |      0.03 |
| httptest_field             |      0.03 |
| httptest_tag               |      0.03 |
| interface_discovery        |      0.03 |
| item_parameter             |      0.03 |
| lld_macro_path             |      0.03 |
| maintenance_tag            |      0.03 |
| media_type_message         |      0.03 |
| media_type_param           |      0.03 |
| opcommand                  |      0.03 |
| opconditions               |      0.03 |
| operations                 |      0.03 |
| opmessage                  |      0.03 |
| optag                      |      0.03 |
| permission                 |      0.03 |
| problem_tag                |      0.03 |
| proxy_autoreg_host         |      0.03 |
| proxy_history              |      0.03 |
| regexps                    |      0.03 |
| report_param               |      0.03 |
| role                       |      0.03 |
| script_param               |      0.03 |
| service_problem_tag        |      0.03 |
| service_status_rule        |      0.03 |
| service_tag                |      0.03 |
| sessions                   |      0.03 |
| sla                        |      0.03 |
| sla_excluded_downtime      |      0.03 |
| sla_schedule               |      0.03 |
| sla_service_tag            |      0.03 |
| sysmap_element_url         |      0.03 |
| sysmap_shape               |      0.03 |
| sysmap_url                 |      0.03 |
| sysmaps_element_tag        |      0.03 |
| task_result                |      0.03 |
| ugset_group                |      0.03 |
| user_ugset                 |      0.03 |
| userdirectory              |      0.03 |
| valuemap                   |      0.03 |
| widget                     |      0.03 |
| corr_condition_tag         |      0.02 |
| corr_condition_tagpair     |      0.02 |
| corr_condition_tagvalue    |      0.02 |
| dbversion                  |      0.02 |
| globalvars                 |      0.02 |
| history_bin                |      0.02 |
| host_rtdata                |      0.02 |
| housekeeper                |      0.02 |
| ids                        |      0.02 |
| interface_snmp             |      0.02 |
| lld_override_opdiscover    |      0.02 |
| lld_override_ophistory     |      0.02 |
| lld_override_opinventory   |      0.02 |
| lld_override_opperiod      |      0.02 |
| lld_override_opseverity    |      0.02 |
| lld_override_opstatus      |      0.02 |
| lld_override_optrends      |      0.02 |
| mfa                        |      0.02 |
| module                     |      0.02 |
| opinventory                |      0.02 |
| proxy_group                |      0.02 |
| proxy_group_rtdata         |      0.02 |
| proxy_rtdata               |      0.02 |
| scim_group                 |      0.02 |
| services                   |      0.02 |
| task_acknowledge           |      0.02 |
| task_check_now             |      0.02 |
| task_close_problem         |      0.02 |
| task_data                  |      0.02 |
| task_remote_command        |      0.02 |
| task_remote_command_result |      0.02 |
| timeperiods                |      0.02 |
| trigger_queue              |      0.02 |
| ugset                      |      0.02 |
| userdirectory_ldap         |      0.02 |
| userdirectory_saml         |      0.02 |
+----------------------------+-----------+
203 rows in set (0,00 sec)

Die Tabelle ist von Groß nach Klein sortiert, der oberste Eintrag ist also die größte Tabelle.
history_uint und trends_uint sind traditionell die größten, in den beiden befinden sich die historischen Zahlenwerte


Zabbix Tabellen für History und Trend bereinigen

Quelle: https://www.zabbix.com/forum/zabbix-help/444108-how-to-delete-old-information-in-tables-history_uint-and-history Für alle nachfolgenden Bereinigungen gilt: MySQL/MariaDB Prompt starten und zur Zabbix-Datenbank wechseln:

mysql
use zabbix;

Ich schlage hier immer 365 Tage vor. History ist zumeist auf 7 bis 30 Tage, Trends auf 90 bis 365 Tage.
Testet es einmal mit den hohen Werten bevor Ihr an das Eingemachte geht.


Alerts, Acknowledges und Events

Zeitraum zum Löschen auf "älter als" 365 Tage setzen:

SET @history_interval = 365;

Alarme löschen:

DELETE FROM alerts WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);

Bestätigungen:

DELETE FROM acknowledges WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);

Ereignisse:

DELETE FROM events WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);

History

Zeitraum zum Löschen auf "älter als" 365 Tage setzen:

SET @history_interval = 365;

Index-Tabelle bereinigen (wenn ihr diese Bereinigt, dann unbedingt alle anderen auch):

DELETE FROM history WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);

Alle Zahlenwerte:

DELETE FROM history_uint WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);

Alle Strings, Texte und Logdaten

DELETE FROM history_str WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);
DELETE FROM history_text WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);
DELETE FROM history_log WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);

Trends

Zeitraum auf 400 Tage

SET @trends_interval = 400;

Und löschen:

DELETE FROM trends WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@trends_interval * 24 * 60 * 60);
DELETE FROM trends_uint WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@trends_interval * 24 * 60 * 60);

Tabellen ganz leeren (alles wegwerfen)

Man kann die Tabellen auch ganz leeren, also alle Altdaten abschneiden:

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

Kommentare

Loading comments...