×

zabbix历史记录占用过大清理方法

hqy hqy 发表于2022-11-11 11:26:01 浏览568 评论0

抢沙发发表评论

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连接不上数据库了


aa997ed6c22eddd75be69ab768a20ea4_40c7799d85894e7eb8ac3225e57173f1.png

二、定位故障

2.1、登录机器发现是被mysql磁盘占用满了


c830b248f2918414a670f50ff8b1098d_8a996adcd17143cda02c59327331e4e8.png


2.2、通过Navicat登陆查看,history相关的这几张表数据量贼大

849bdbeaeb08d715ab3d7ffcf5c35aa6_acf6059fb75347ea902d4f2ad217412c.png


三、问题处理

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 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客