zabbix历史记录占用过大清理方法
一、问题表现
1.1、突然有一天zabbix连接不上数据库了
二、定位故障
2.1、登录机器发现是被mysql磁盘占用满了
2.2、通过Navicat登陆查看,history相关的这几张表数据量贼大
三、问题处理
3.1、先将zabbix-server服务停止
防止清理过程中数据写入
systemctl stop zabbix-server
3.2、通过Navicat操作自行清理SQL
方法1:清理所有历史记录
注意:该操作会把zabbix所有的历史数据清空,若有重要数据请先备份数据库
TRUNCATE清空整张表,然后根据原先表结构重新创建
TRUNCATE删除比较快,如果我们执行truncate的过程中退出会产生错误信息
TRUNCATE TABLE history;
OPTIMIZE TABLE history;
TRUNCATE TABLE history_uint;
OPTIMIZE TABLE history_uint;
TRUNCATE TABLE history_str;
OPTIMIZE TABLE history_str;
TRUNCATE TABLE history_text;
OPTIMIZE TABLE history_text;
TRUNCATE TABLE trends;
OPTIMIZE TABLE trends;
TRUNCATE TABLE trends_uint;
OPTIMIZE TABLE trends_uint;
方法2:清理指定时间前的数据
例如:清理一个月前的数据 当前时间 2022-08-15
访问 时间戳转换工具 转换时间戳
DELETE FROM history WHERE clock < 1657857865;
DELETE FROM history_uint WHERE clock < 1657857865;
DELETE FROM history_str WHERE clock < 1657857865;
DELETE FROM history_text WHERE clock < 1657857865;
3.3、最后再启动zabbix-server服务,恢复正常!
systemctl start zabbix-server