zabbix 清理历史数据

1.说明

zabbix运行一定时间后,会留下大量历史数据,发现zabbix的数据库会一直在增大,运行1年6个月后数据库ibdata1的数据为432G,造成性能下降,查看历史数据时查询速度变慢。

zabbix数据库里面最大的便是历史记录表,由于数据过大选择清空表,也可选择根据时间删除里面的历史记录(zabbix里面的数据使用时间戳的方式记录)。

使用docker-compose创建mysql,并把zabbix数据导入到新创建的mysql中,修改zabbix链接信息,使zabbix连接到新的数据库。让zabbix能正常工作

2 历史数据清理

2.1 停止相关服务,避免数据写入

 netstat -tnlp |grep mysql 
 
 systemctl stop zabbix-server

2.2 清空历史数据

mysql
use zabbix;

truncate table history;
optimize table history;

truncate table history_uint;
optimize table history_uint;

truncate table trends_uint;
optimize table trends_uint;

2.3 备份数据库

mysqldump -R -q --all-databases > /backup/zabbix.sql;

3.docker-compose 创建mysql.5.5,导入数据

3.1 准备镜像和环境

docker pull mysql:5.5

mkdir -p /backup/mysql/{datadir,conf}

3.2 编写mysql启动yaml

version: '2'
services:
  myslq:
    image: mysql:5.5
    container_name: mysql
    ports:
    - 127.0.0.1:8706:3306
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: zabbix@2022
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /backup/mysql/datadir:/var/lib/mysql
      - /backup/mysql/conf/my.cnf:/etc/my.cnf

3.3 启动数据库

docker-compose up -d 

3.4 确认innodb_file_per_table,导入zabbix数据

mysql -uroot -p -h127.0.0.1 -P8706

mysql> show variables like '%per_table%';  #确认是否为on

mysql> source /backup/zabbix.sql;

3.5 删除zabbix用户重新创建

myslq> use mysql;

mysql> drop user zabbix@’localhost’;

mysql> grantall privileges on zabbix.* to zabbix@’localhost’ identified by ‘xchl8192’;

mysql> flush privileges;

4. 修改配置

4.1 修改zabbix_server中mysql链接信息

 vim /etc/zabbix/zabbix_server.conf
 
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=xchl8192
DBSocket=/backup/mysql/datadir/mysql.sock
DBPort=8706

4.2 修改php配置中mysql链接信息

vim /etc/zabbix/web/zabbix.conf.php

$DB['TYPE']				= 'MYSQL';
#$DB['SERVER']			= 'localhost';
$DB['SERVER']			= '127.0.0.1';
#$DB['PORT']				= '0';
$DB['PORT']				= '8706';
$DB['DATABASE']			= 'zabbix';
$DB['USER']				= 'zabbix';
$DB['PASSWORD']			= 'xchl8192';

5.启动zabbix

systemctl start zabbix-server

你可能感兴趣的:(监控,zabbix,ibdata1)