处理Zabbixl历史数据库解决办法三---使用MySQL中间件为Zabbix数据库扩容
admin
2023-06-10 08:22:57
0次

一 应用场景描述

 前面介绍了两种处理Zabbix历史数据的解决办法,但是如果当监控数据继续增长的话是不足以解决问题的。

 处理Zabbix历史数据库办法二---使用MySQL表分区

 处理Zabbix历史数据库办法一

 

 办法一适合在没有做表分区的情况下,只保留一段时间的数据,比如一个月,然后把老的数据删除再使用方法二,这种操作执行时间长。

 办法二是使用MySQL自带的表分区功能,将history等表按照日期进行分区,然后只保留一段时间的数据。但是即使使用表分区功能定期删除不用的分区数据,也会有瓶颈产生。比如,监控数据量大了,一个月的历史数据都有好几百G,继续增长就会把服务器磁盘撑爆了。所以,纵向扩展不是最好的选择。由于Zabbix设计的是单库结构,所有的表操作都是在同一个数据库中执行,这样像history这样的大表操作必然会影响其他的表操作,如何将history这个几个大表隔离出来放到其他数据库服务器上才是解决问题的关键。由此想到可以使用MySQL中间件来对Zabbix数据库进行分表操作,同时可以借助于MySQL中间件提供的读写分离功能,对这些大表进行读写分离,进一步减轻压力。


二 MySQL中间件选型

 在选择使用哪一款MySQL中间件之前先确定我们的需求:

 最好是开源产品,同时是出于活跃开发的产品

 尽量在不更改Zabbix代码的情况下可以直接使用---重点

 提供分库分表的功能

 提供读写分离的功能

 性能稳定,线上使用案例多

 SQL语句解析丰富 


 明白了这些需求之后,就可以开始查资料选型了。几种可选的MySQL中间件如下:

 Cobar   阿里巴巴开源的产品,3年多没有维护了,直接放弃

 Mycat   Cobar的改良版本,由社区维护,功能丰富,有线上案例参考。同时文档和资料齐全。

       《分布式数据库架构及企业实践——基于Mycat中间件》

                   可以测试

 OneProxy 前支付宝DBA开发的商业产品,社区版本有限制。不过,他们有现成的Zabbix数据库扩容方案。直接放弃

 Kingshard 用Go语言开发的MySQL中间件,支持分库分表和读写分离等功能。可以测试

 DBProxy  美团最近开源的MySQL中间件,支持分表和读写分离。 可以测试



 由此我们需要测试3个MySQL中间件:Mycat,Kingshard和DBProxy


 首先部署两个MySQL数据库实例

 172.28.2.231:3306  默认DB1

 172.28.2.227:3306   存放history几个大表的DB2


 两个DB实例都建好Zabbix数据库和帐号,然后按照3个中间件的文档部署

 history,history_uint,history_str,history_text,history_log,trends,trends_uint 这几张表按照文档分配到DB2,其他的表默认走DB1


 1.测试Mycat

  Zabbix server日志没有报错,但是Zabbix页面有报错,主要都是SELECT DISTINCT h.* 这种SQL Mycat无法解析。在终端下测试SELECT DISTINCT * 就不报错,同时如果history几个表不走DB2而是走默认的DB1也不会报错。


 2.测试Kingshard

  Zabbix server错误日志刷新频繁,同时Kingshard的错误日志刷新较多,Zabbix页面错误较多。

 

 3.测试DBProxy

  编译安装不成功,直接放弃


 所以,接下来我们重点测试如果使用Mycat来扩容数据库。关于MySQL中间件的资料网上很多,大家可以自行查找。分表功能包括




三 使用Mycat来为Zabbix数据库分表
















参考文档:

https://github.com/flike/kingshard

http://www.open-open.com/news/view/1708e64

https://github.com/alibaba/cobar

https://github.com/MyCATApache/Mycat-Server

http://mycat.io/

http://www.onexsoft.com/zh/oneproxy-scale-out-zabbix.html

https://github.com/flike/kingshard

https://github.com/Meituan-Dianping/DBProxy






相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...