设为首页 收藏本站
查看: 1653|回复: 0

[经验分享] zabbix优化记一次惨痛的zabbix数据库优化

[复制链接]

尚未签到

发表于 2019-1-26 08:03:10 | 显示全部楼层 |阅读模式
  最近负责公司的zabbix项目,由于前期缺少整体性能架构的规划,导致后期出一系列的问题,玩zabbix的兄弟都知道,zabbix最大的瓶颈本身不在zabbix服务,而在mysql数据库的压力上,因此,优化zabbix其实就是优化zabbix的配置以及zabbix的mysql了;
  Zabbix 数据库常见的优化处理方法有两种:
  01. 优化数据库,对数据库进行分表处理;
  02. 清空数据库中的history, history_uint表;
  在接下来的方案我们就mysql数据库分表来进行优化;
  具体思路:
  1. 首先下载脚本
  https://github.com/itnihao/zabbixdbpartitioning
  感谢hao哥提供脚本以及帮助。
  2. 前期准备工作,安全起见最好安装screen,也不怕程序卡死,关于screen的用法请参考http://www.kwx.gd/CentOSApp/CentOS-screen.html
  关闭zabbix的邮件报警,也可以关闭zabbix server服务,mysql本身会锁表
  3. 在screen模式下运行脚本,
  在这里需要注意的是,如果你的数据库特别大,最好先备份,然后在修改脚本,然后分表,在修改脚本的时候需要注意的几个地方我这里先列出来下,如下:
  首先修改zabbix 数据库和密码 默认情况下是都是zabbix 如果你的也是这样的话,那么不用修改,
  然后修改配置文件的路径,根据自己的自定义的路径来修改脚本的路径
  如果手动备份了那么关闭脚本中备份.
  4. 然后来查看是否创建完成;
  具体实施:
  1. 首先在安装部署之前,来查看两张图片,然后我们就知道压力怎么样了,


  2. 切记记得备份,关于备份就不在这里列出来了,使用mysqldump来完成备份.关闭zabbix服务器;
  完整导出数据库备份,
mysqldump -uroot -p zabbix > /www/zabbix.sql
导出数据库结构不导出数据:
mysqldump --opt -d zabbix -uroot -p > zabbix.biao.sql
关闭zabbix服务:
/etc/rc.d/init.d/zabbix-server stop  3. 执行脚本,在执行脚本之前,我们先创建两张表, history_bak和history_uint_bak,然后我们重命名原来的两张表history和history_uint两张表;然后把创建的两张表变成原来的,这样表中就没有数据了.如下:
  创建表:关于创建,可以到处zabbix数据库的表结构,然后找到这个表就可以,还好这两张表没有依赖关系。
CREATE TABLE `history_bak` (
`itemid` bigint(20) unsigned NOT NULL,
`clock` int(11) NOT NULL DEFAULT '0',
`value` double(16,4) NOT NULL DEFAULT '0.0000',
`ns` int(11) NOT NULL DEFAULT '0',
KEY `history_1` (`itemid`,`clock`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `history_uint_bak` (
`itemid` bigint(20) unsigned NOT NULL,
`clock` int(11) NOT NULL DEFAULT '0',
`value` bigint(20) unsigned NOT NULL DEFAULT '0',
`ns` int(11) NOT NULL DEFAULT '0',
KEY `history_uint_1` (`itemid`,`clock`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;  重命名表:
rename table history to history_bak_14_03_08;
rename table history_bak to history;
rename table history_uint to history_uint_bak_14_03_08;
rename table history_uint_bak to history_uint;  4. 然后来执行脚本;
  bash -x partitiontables.sh,可以根据提示来选择Y/N
  因为我是代bug模式输出的脚本,输出比较多,我在这里截几张重要的图片,大家已做参考:



  5. 完成之后我们可以查看数据是否来看有没有成功

  生成的任务计划脚本路径:
cat /etc/cron.daily/zabbixhousekeeping  记得要在脚本中配置邮件,因为在我们的案例中我们使用的是mutt+msmtp 脚本如下:
[root@zabbix-server-01 ~]# cat /usr/local/zabbix/cron.d/housekeeping.sh
#!/bin/bash
MAILTO=431054426@qq.com
tmpfile=/tmp/housekeeping$$
date >$tmpfile
/usr/bin/mysql --skip-column-names -B -h localhost -u zabbix -pzabbix zabbix -e "CALL create_zabbix_partitions();" >>$tmpfile 2>&1
/usr/bin/mutt -s "Zabbix MySql Partition Housekeeping" $MAILTO

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-667597-1-1.html 上篇帖子: zabbix 安装 部署 网络监控 下篇帖子: zabbix发送邮件py脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表