zabbix mysql分区_zabbix使用mysql数据库 对表分区

zabbix删除历史数据 mysql 表自动分区、删除

----2016年终总结 二

zabbix清理历史数据是个比较蛋疼的问题,尤其在监控数据较多时,一方面无法彻底释放历史数据空间,一方面数据库删除速度是个瓶颈,housekeeper进程长时间占用过高。

如果对数据库中的history_uint表进行分区,则可以解决以上问题。但此方法不利于数据库的规范管理,仅适用于小规模的监控场景。同时,定时脚本本身也是挖坑,这只是个临时解决方案。

DATA_STAMP_ONE_DAY_LONGTH=86400#一天的时间戳跨度

LOGFILE="/var/log/zabbix/partition.log"

HISTORY_PERIOD=7 #历史纪录保留天数

DATA_TODAY=`date +%Y%m%d` #获取今天时间

DATA_STAMP_TODAY=`date --date=$DATA_TODAY +%s` #今天的时间戳

((HISTORY_TIMESTAMP_LONGTH=$DATA_STAMP_ONE_DAY_LONGTH * $HISTORY_PERIOD)) #一个周期的时间戳长度

((DATA_STAMP_TOMORROW=$DATA_STAMP_TODAY + $DATA_STAMP_ONE_DAY_LONGTH)) #第二天的时间戳

((DATA_STAMP_HISTORY=$DATA_STAMP_TOMORROW - $HISTORY_TIMESTAMP_LONGTH)) #一个周期前的时间戳

DATA_HISTORY=`date -d @$DATA_STAMP_HISTORY +"%Y%m%d"` #一个周期前的日期

DATA_TOMORROW=`date -d @$DATA_STAMP_TOMORROW +"%Y%m%d"` #第二天的日期

echo ' ' >>$LOGFILE

#创建第二天使用的分区

mysql -u$USER_NAME -p$PASSWORD -D zabbix -e "ALTER TABLE \`history_uint\` ADD PARTITION (PARTITION p$DATA_TOMORROW VALUES LESS THAN ($DATA_STAMP_TOMORROW) ENGINE = InnoDB);" 2> /tmp/partition_temp_log

if [ $? -eq 0 ];then

echo "SUCCESS! CREATE PARTITION p$DATA_TOMORROW at `date`" >> $LOGFILE

else

echo "FAILED! CREATE PARTITION p$DATA_TOMORROW at `date`" >> $LOGFILE

echo `cat /tmp/partition_temp_log` >> $LOGFILE

fi

#删除一个周期前的分区

mysql -u$USER_NAME -p$PASSWORD -D zabbix -e "ALTER TABLE \`history_uint\` DROP PARTITION p$DATA_HISTORY;" 2> /tmp/partition_temp_log

if [ $? -eq 0 ];then

echo "SUCCESS! DROP PARTITION p$DATA_HISTORY at `date`" >> $LOGFILE

else

echo "FAILED! DROP PARTITION p$DATA_HISTORY at `date`" >> $LOGFILE

echo `cat /tmp/partition_temp_log` >> $LOGFILE

fi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Zabbix 中监控 MySQL 数据库,需要进行以下步骤: 1. 安装 Zabbix Agent 在要监控的 MySQL 服务器上安装 Zabbix Agent。你可以从 Zabbix 官网下载适合你系统的安装包,或使用包管理器进行安装。 2. 安装 MySQL 监控插件 在 Zabbix Server 上安装 MySQL 监控插件。你可以从 Zabbix 官网下载适合你版本的插件。 3. 配置 MySQL 监控插件 在 Zabbix Server 上编辑插件配置文件(mysql.conf),配置 MySQL 数据库的连接信息和监控项。 例如: ``` UserParameter=mysql.ping, mysqladmin -uroot ping | grep -c alive UserParameter=mysql.version, mysql -V UserParameter=mysql.status[*], mysqladmin -uroot -p$1 status $2 | awk '{print $$NF}' UserParameter=mysql.size[*], mysql -uroot -p$1 -e 'SELECT table_schema "$2", Round(Sum(data_length + index_length) / 1024 / 1024, 2) "Size (MB)" FROM information_schema.tables WHERE table_schema="$2";' | grep -v Size UserParameter=mysql.qps, mysqladmin -uroot -p$1 status | cut -f9 -d':' | awk '{print $$1}' ``` 这些配置项允许 Zabbix Agent 在远程 MySQL 服务器上执行命令并获取数据。 4. 添加 MySQL 监控项 在 Zabbix Server 上添加 MySQL 数据库监控项。你可以通过 Zabbix Web 界面添加监控项,包括: - MySQL 数据库版本 - MySQL 数据库状态 - MySQL 数据库大小 - MySQL 数据库 QPS(每秒查询数) 5. 创建 MySQL 监控模板 在 Zabbix Web 界面上创建 MySQL 监控模板,并将监控项添加到模板中。 6. 将 MySQL 主机关联到监控模板 将要监控的 MySQL 主机关联到 MySQL 监控模板。 完成以上步骤后,你就可以在 Zabbix Web 界面上查看 MySQL 数据库的监控数据了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值