zabbix自動清理30天前的數據

#!/bin/bash
User="xxxx"
Passwd="xxxx"
Date=`date -d $(date -d "-30 day" +%Y%m%d) +%s` #取30天之前的時間戳
$(which mysql) -u${User} -p${Passwd} -e "
use zabbix;
DELETE FROM history WHERE 'clock' < $Date;
optimize table history;
DELETE FROM history_str WHERE 'clock' < $Date;
optimize table history_str;
DELETE FROM history_uint WHERE 'clock' < $Date;
optimize table history_uint;
DELETE FROM  trends WHERE 'clock' < $Date;
optimize table  trends;
DELETE FROM trends_uint WHERE 'clock' < $Date;
optimize table trends_uint;
DELETE FROM events WHERE 'clock' < $Date;
optimize table events;
"

其中histroy是詳細的歷史數據,trends是圖表趨勢數據。一般情況下,根據我的自定義,會將histroy數據保留7天,trend數據保留365天。

方法二:不保留歷史數據快速
一,備份除歷史數據的數據庫表
 mysqldump -uroot -p'yourpassword' zabbix  --ignore-table=zabbix.history_uint --ignore-table=zabbix.history --ignore-table=zabbix.trends_uint -ignore-table=zabbix.trends --ignore-table=zabbix.events --ignore-table=zabbix.history_str >/data/backup20150626.sql
二,新建數據庫
create database zabbix2 character set utf8;
GRANT ALL PRIVILEGES ON zabbix2.* TO 'zabbix'@'localhost' IDENTIFIED BY  'yourpassword'; 
這裏是建立的zabbix2數據庫,名字可以隨意取
三,導入原架構和新數據
mysql -uroot -p'yourpassword' zabbix2 < /root/zabbix-2.4.2/database/mysql/schema.sql 
mysql -uroot -p'yourpassword' zabbix2 < /root/zabbix-2.4.2/database/mysql/images.sql 
mysql -uroot -p'yourpassword' zabbix2 < /root/zabbix-2.4.2/database/mysql/data.sql 
mysql -uroot -p'yourpassword' zabbix2 < /data/backup20150626.sql
如果開始沒有剔除上面忽略的4個表,這裏上面三行就不需要了。 
四,修改zabbix_server連接數據庫配置文件
grep -i DBName /usr/local/zabbix/etc/zabbix_server.conf
#DBName=zabbix
DBName=zabbix2
五,修改zabbix站點zabbix.conf配置文件
grep -i database /var/www/html/conf/zabbix.conf.php
$DB['DATABASE'] = 'zabbix2';
// SCHEMA is relevant only for IBM_DB2 database
六,重啓服務
service zabbix_server restart
service mysqld restart(不重啓也可)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章