zabbix历史记录占用过大清理方法
一、问题表现
1.1、突然有一天zabbix连接不上数据库了
二、定位故障
2.1、登录机器发现是被mysql磁盘占用满了
2.2、通过Navicat登陆查看,history相关的这几张表数据量贼大
三、问题处理
3.1、先将zabbix-server服务停止
3.2、通过Navicat操作自行清理SQL
方法1:清理所有历史记录
方法2:清理指定时间前的数据
3.3、最后再启动zabbix-server服务,恢复正常!
一、问题表现
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;
方法2:清理指定时间前的数据
例如:清理一个月前的数据 当前时间 2022-08-15
访问 时间戳转换工具 转换时间戳 https://tool.lu/timestamp/
DELETE FROM history WHERE clock < 1657857865;
DELETE FROM history_uint WHER Eclock < 1657857865;
DELETE FROM history_str WHERE clock < 1657857865;
DELETE FROM history_text WHERE clock < 1657857865;
3.3、最后再启动zabbix-server服务,恢复正常!
systemctl start zabbix-server
3.4、 方法2,正常清空下,清理后,history_uint 还是那么大,这时候就要清理
a、 alter table tabname ENGINE=InnoDB;
MariaDB [zabbix]> alter table history_uint ENGINE=InnoDB;
Stage: 1 of 2 'copy to tmp table' 16.8% of stage done
b、 ANALYZE TABLE tabname;
c、 optimize table tabname;
本文链接:https://www.kinber.cn/post/2905.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝: