zabbix监控运行一段时间以后,会留下大量的历史监控数据,zabbix数据库一直在增大;可能会造成系统性能下降,查看历史数据室查询速度缓慢,图形出现断图现象,隔几秒出现断图,发现CPU采集数据的时候使用率都是100%,如下图
zabbix里面最大的表就是history和history_uint两个表,而且zabbix里面的时间是使用的时间戳方式记录,所以可以根据时间戳来删除历史数据
1、先生成unix时间戳,时间设定为2024年7月23日之前的数据全部删除,先记下 1721664000 这个时间戳,后面执行删除时要用
date +%s -d "2024-07-23"
2、停止zabbix-server、Apache2进程
sudo systemctl stop zabbix-server.service apache2.service
3、查询文件占用空间
cd / sudo du -sh * | grep G
4、备份数据库(可选,备份时间较长)
sudo mysqldump -uroot -p zabbix>./zabbix.sql
5、登录数据库,删除操作,时间可能较长请耐心等待,中间不要终止,否则容易数据丢失
sudo mysql -uroot -p #登录mysql数据库 mysql> use zabbix; #切换到zabbix数据库 mysql> delete from history where clock < 1721664000; #删除2024年7月23日之前的历史数据 Query OK, 0 rows affected (0.61 sec) mysql> 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 | +----------------+----------+----------+-------------------------------------------------------------------+ 2 rows in set (0.83 sec) mysql> delete from history_uint where clock < 1721664000; #删除2024年7月23日之前的历史数据 ERROR 1206 (HY000): The total number of locks exceeds the lock table size mysql> optimize table history_uint; #优化表空间结构 +---------------------+----------+----------+-------------------------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +---------------------+----------+----------+-------------------------------------------------------------------+ | zabbix.history_uint | optimize | note | Table does not support optimize, doing recreate + analyze instead | | zabbix.history_uint | optimize | status | OK | +---------------------+----------+----------+-------------------------------------------------------------------+ 2 rows in set (3 hours 27 min 58.55 sec)
mysql> delete from trends where clock < 1721664000; #删除2024年7月23日之前的历史数据 ERROR 4031 (HY000): The client was disconnected by the server because of inactivity. See wait_timeout and interactive_timeout for configuring this behavior. No connection. Trying to reconnect... Connection id: 12 Current database: zabbix Query OK, 8172 rows affected (2.74 sec) mysql> optimize table trends; #优化表空间结构 +---------------+----------+----------+-------------------------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +---------------+----------+----------+-------------------------------------------------------------------+ | zabbix.trends | optimize | note | Table does not support optimize, doing recreate + analyze instead | | zabbix.trends | optimize | status | OK | +---------------+----------+----------+-------------------------------------------------------------------+ 2 rows in set (0.29 sec) mysql> delete from trends_uint where clock < 1721664000; #删除2024年7月23日之前的历史数据 Query OK, 354220 rows affected (5.71 sec) mysql> optimize table trends_uint; #优化表空间结构 +--------------------+----------+----------+-------------------------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +--------------------+----------+----------+-------------------------------------------------------------------+ | zabbix.trends_uint | optimize | note | Table does not support optimize, doing recreate + analyze instead | | zabbix.trends_uint | optimize | status | OK | +--------------------+----------+----------+-------------------------------------------------------------------+ 2 rows in set (0.39 sec)
mysql> delete from events where clock < 1721664000; #删除2024年7月23日之前的历史数据 Query OK, 3106 rows affected (0.86 sec) mysql> optimize table events; #优化表空间结构 +---------------+----------+----------+-------------------------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +---------------+----------+----------+-------------------------------------------------------------------+ | zabbix.events | optimize | note | Table does not support optimize, doing recreate + analyze instead | | zabbix.events | optimize | status | OK | +---------------+----------+----------+-------------------------------------------------------------------+ 2 rows in set (0.43 sec)
mysql> delete from auditlog where clock < 1721664000; #删除2024年7月23日之前的历史数据 Query OK, 144055 rows affected (13.33 sec) mysql> optimize table auditlog; #优化表空间结构 +-----------------+----------+----------+-------------------------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +-----------------+----------+----------+-------------------------------------------------------------------+ | zabbix.auditlog | optimize | note | Table does not support optimize, doing recreate + analyze instead | | zabbix.auditlog | optimize | status | OK | +-----------------+----------+----------+-------------------------------------------------------------------+ 2 rows in set (0.34 sec)
6、启动服务
sudo systemctl start zabbix-server.service apache2.service
# 使用truncate命令清空zabbix 所有监控数据 (未尝试)
------------------------------------------------------- truncate table history; optimize table history; ------------------------------------------------------- truncate table history_str; optimize table history_str; ------------------------------------------------------- truncate table history_uint; optimize table history_uint; ------------------------------------------------------- truncate table trends; optimize table trends; ------------------------------------------------------- truncate table trends_uint; optimize table trends_uint; ------------------------------------------------------- truncate table events; optimize table events; ------------------------------------------------------- # 注意:这些命令会把zabbix所有的监控数据清空,操作前注意备份数据库 # truncate是删除了表,然后根据表结构重新建立,delete删除的是记录的数据没有修改表 # truncate执行删除比较快,但是在事务处理安全性方面不如delete,如果我们执行truncat的表正在处理事务,这个命令退出并会产生错误信息
标签:清除,zabbix,uint,监控,mysql,table,optimize,history From: https://www.cnblogs.com/xiykj/p/18336357