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