zabbix数据库优化脚本

分享一个zabbix数据库的优化脚本,适合2.0版本。

对history,hostory_uint按日分区,trends,trends_uint按月分区;

关闭Houserkeeper:

vim zabbix_server.conf

DisableHousekeeper=1

对history,hostory_uint每日建立第二天的分区并删除45天前的分区

对trends,trends_uint每月20号建立下一个月的分区,并删除12个月前的分区

时间可以自己修改

由于events表的大小对仪表盘的展示速度影响很大,2.0以后的版本又对该表做过修改,具有主键约束,不能以clock做分区表优化,所以我每日都清理该表,只保留了3天的数据(根据自己的环境和需求而定,可以自己修改),很简单的一个定期维护脚本,希望能帮到大家

#!/usr/bin/env python
# coding: utf-8
import MySQLdb
import datetime
now_time = datetime.datetime.now()
error_time = now_time.strftime(‘%Y-%m-%d %H:%M:%S‘)
theday = (now_time + datetime.timedelta(days=+1)).strftime(‘%Y%m%d‘)
next_day = (now_time + datetime.timedelta(days=+2)).strftime(‘%Y-%m-%d‘)
themonth = datetime.datetime(now_time.year,(now_time.month+1),now_time.day).strftime(‘%Y%m‘)
next_month = datetime.datetime(now_time.year,(now_time.month+2),1).strftime(‘%Y-%m-%d‘)
last_time = (now_time - datetime.timedelta(days=30)).strftime(‘%Y%m%d‘)
last_time_month = datetime.datetime((now_time.year-1),now_time.month,now_time.day).strftime(‘%Y%m‘)
events_time = (now_time - datetime.timedelta(days=1)).strftime(‘%Y-%m-%d‘)
history_time = (now_time - datetime.timedelta(days=45)).strftime(‘%Y%m%d‘)
trends_time = datetime.datetime((now_time.year-1),now_time.month,now_time.day).strftime(‘%Y%m‘)
table_day=[‘history‘, ‘history_uint‘]
table_month=[‘trends‘, ‘trends_uint‘]
conn=MySQLdb.connect(host=‘localhost‘,user=‘zabbix‘,passwd=‘zabbix‘,db=‘zabbix‘,port=3306)
cur=conn.cursor()
for name_d in table_day:
   try:
   ####新增分区#######
      cur.execute(‘ALTER TABLE `%s` ADD PARTITION (PARTITION p%s VALUES LESS THAN (UNIX_TIMESTAMP("%s 00:00:00")))‘ % (name_d, theday, next_day))

   except MySQLdb.Error,e:
       print "[%s] Mysql Error %d: %s" % (error_time, e.args[0], e.args[1])
       pass
for name_m in table_month:
   try:
      ####新增分区#######
      if now_time.day == 20:
         cur.execute(‘ALTER TABLE `%s` ADD PARTITION (PARTITION p%s VALUES LESS THAN (UNIX_TIMESTAMP("%s 00:00:00")))‘ % (name_m, themonth, next_month))
   except MySQLdb.Error,e:
       print "[%s] Mysql Error %d: %s" % (error_time, e.args[0], e.args[1])
       pass
######清除events表1天前的数据######
try:
   cur.execute(‘DELETE FROM `events` where `clock` < UNIX_TIMESTAMP("%s 00:00:00")‘% events_time)
   cur.execute(‘optimize table events;‘)
except MySQLdb.Error,e:
   print "[%s] Mysql Error %d: %s" % (error_time, e.args[0], e.args[1])
   pass
######清除history,histroy_uint表45天前的数据######
for name_d in table_day:
    try:
       cur.execute(‘ALTER TABLE `%s` DROP PARTITION p%s;‘ % (name_d, history_time))
    except MySQLdb.Error,e:
       print "[%s] Mysql Error %d: %s" % (error_time, e.args[0], e.args[1])
       pass
######清除trends,trends_uint表一年前的数据######
for name_m in table_month:
    try:
       cur.execute(‘ALTER TABLE `%s` DROP PARTITION p%s;‘ % (name_m, trends_time))
    except MySQLdb.Error,e:
       print "[%s] Mysql Error %d: %s" % (error_time, e.args[0], e.args[1])
       pass
conn.commit()
cur.close()
conn.close()

zabbix数据库优化脚本

时间: 2024-11-05 04:40:51

zabbix数据库优化脚本的相关文章

MySQL备份脚本(包含zabbix数据库)

需求:按天备份,保留一周,zabbix数据库不备份历史数据 MySQL版本:5.7.17 脚本: 需要提前建立路径 mkdir -pv /opt/mysql_backup/auto_backup cat /opt/mysql_backup/mysqlback.sh #!/bin/bash # 0 3 * * * bash /opt/mysql_backup/mysqlback.sh &>/dev/null DBUSER=root DBPASS=********** DATE=`date +%

Zabbix配置文件的参数优化和Zabbix的数据库优化

Zabbix配置文件的参数优化 StartPollers=60 StartPollersUnreacheable=80 StartTrappers=20 StartPingers=100 StartDiscoverers=120 #zabbix提示进程繁忙时修改此参数,最大二百五,建议100左右,值大消耗cpu性能大 CacheSize=1024M StartDBSyncers=16 HistoryCacheSize=1024M TrendCacheSize=1024M HistoryTextC

mysql优化-针对zabbix数据库

mysql优化: 修改mysql的root账号的密码: 先停止mysql服务: service mysqld stop 使用--skip-grant-tables忽略密码启动: mysqld_safe --skip-grant-tables & 进入mysql修改密码: use mysql update user set password=password('mysql') where user='root'; flush privileges; 查看表占用空间情况: select table_

zabbix的数据库优化

走zabbix的1.6版本开始测试,1.8的版本开始线上使用,线上使用过1.9.2.0.2.2.3.0.4.0的版本,使用或是测试过zabbix1.6之后的所有版本.个人也有之前的SA转变为DBA,就zabbix的运维走数据库层面有一些自己的心得,希望对读者有所帮助. 1:MySQL版本推荐 MySQL5.7及以上版本,便捷的在线DDL方便zabbix的快速升级链接数据库方式:zabbix的server.proxy.MySQL数据库尽量使用域名方式连接,方便进行故障切换. 2:zabbix数据库

zabbix一键安装脚本

脚本作者:火星小刘 web:www.huoxingxiaoliu.com email:[email protected] 要求纯净centos6/7系统 关闭防火墙 关闭selinux php>=5.6 运行"server-install.sh"安装zabbix服务器端 由于zabbix3需要php5.6以上,因此脚本会删除原有php环境从新安装 mysql默认root密码123321zabbix数据库名称zabbixzabbix数据库用户名zabbixzabbix数据库密码za

如何从Zabbix数据库中获取监控数据

做过Zabbix的同学都知道,Zabbix通过专用的Agent或者SNMP收集相关的监控数据,然后存储到数据库里面实时在前台展示.Zabbix监控数据主要分为以下两类: 历史数据:history相关表,从history_uint表里面可以查询到设备监控项目的最大,最小和平均值,即存储监控数据的原始数据. 趋势数据:trends相关表,趋势数据是经过Zabbix计算的数据,数据是从history_uint里面汇总的,从trends_uint可以查看到监控数据每小时最大,最小和平均值流量. Zabb

中国移动MySQL数据库优化最佳实践

原创 2016-08-12 章颖 DBAplus社群 本文根据DBAplus社群第69期线上分享整理而成,文末还有书送哦~ 讲师介绍章颖 数据研发工程师 现任中国移动杭州研发中心数据研发工程师,擅长MySQL故障诊断,性能调优,MySQL高可用技术,曾任中国电信综合平台开发运营中心DBA 开源数据库MySQL比较容易碰到性能瓶颈,为此经常需要对MySQL数据库进行优化,而MySQL数据库优化需要运维DBA与相关开发共同参与,其中MySQL参数及服务器配置优化主要由运维DBA完成,开发则需要从数据

zabbix数据库迁移

一.环境 192.168.1.163 zabbix 由于与线上业务争资源,影响比较大,故需要迁移,而现在是lamp部署 192.168.1.190 把原有zabbix数据库迁到这个台机器上3306上 二.163机器步 1.导出zabbix数据表结构 [[email protected] ~]# mysqldump -uroot -pdy2013 -P3308 -h127.0.0.1 --opt -d zabbix > zabbix.sql 2.把文件传到190机器上,以便恢复 [[email p

MySQL数据库优化详解(收藏)

MySQL数据库优化详解 mysql表复制 复制表结构+复制表数据mysql> create table t3 like t1;mysql> insert into t3 select * from t1;mysql索引 ALTER TABLE用来创建普通索引.UNIQUE索引或PRIMARY KEY索引ALTER TABLE table_name ADD INDEX index_name (column_list)ALTER TABLE table_name ADD UNIQUE (colu