一 应用场景描述

前面介绍了两种处理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数据库分表

参考文档:

zabbix历史数据mysql_处理Zabbixl历史数据库解决办法三---使用MySQL中间件为Zabbix数据库扩容...相关推荐

  1. zabbix历史数据mysql_处理Zabbix历史数据库办法一

    一 问题描述 随着Zabbix监控的主机和监控项目增多,Zabbix的历史数据会越来越多,MySQL数据库磁盘空间很容易就爆满,同时Zabbix前端查询数据会变得越来越慢.特别是通过Zabbix的AP ...

  2. zabbix6.0出现Zabbix服务器端运行中 不,解决办法,百试百灵

    这种情况,看了数据库配置没有问题,直接在命令里输入: **service httpd start systemctl enable httpd.service cd /usr/local/zabbix ...

  3. Mysql报错1091解决办法_关于MYSQL:外键删除后,查询表发现外键依旧存在,再删一次会报错:原因及相关解决办法...

    1.创建表test6:外键名为test3_fk mysql> create table test6( -> id int, -> test_name varchar(32), -&g ...

  4. 解决PHPStudy8.1.1 mySQL服务启动失败 数据库工具报错卡死

    项目场景: 最近在学PHP,学到mySQL的时候我掏出了我积满灰尘的PHPStudy,但是版本太低了,就去下了个新版: 问题描述: 然后就是mySQL服务无法启动,老倒霉蛋了,一点都不惊讶甚至觉得就该 ...

  5. mysql could not create connection_mysql8.0 Could not create connection to database server.解决办法...

    解决win10下MySQL 8.0登录Access denied for user 'root'@'localhost' (using password: YES)的问题 解决办法:重新设置密码 my ...

  6. Mysql错误: Lock wait timeout exceeded 解决办法

    一.临时解决办法: 执行mysql命令:show full processlist; 然后找出插入语句的系统id 执行mysql命令:kill id 或 首先,查看数据库的进程信息: show ful ...

  7. php 编译错误,PHP 编译错误及解决办法

    ./configure的时候出现如下错误: configure: error: xslt-confignot found. Please reinstall the libxslt >= 1.1 ...

  8. mysql centos7 默认密码忘记_centos7 mysql忘记密码解决办法

    前言 centos7 安装mysql以及忘记密码解决办法 具体介绍及操作 解决办法如下: mysql 安装过程 wget http://repo.mysql.com/mysql-community-r ...

  9. mysql远程无法登陆_无法远程登陆MySQL数据库几种解决办法

    无法远程登入MySQL数据库的解决办法一: 尝试用MySQL Adminstrator GUI Tool登入MySQL Server,Server却回复错误讯息:Host '60-248-32-13. ...

最新文章

  1. Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等
  2. 【算法基础】常用的数据结构与算法
  3. SQL Server Update 所有表的某一列(列名相同,类型相同)数值
  4. mysql slave 1032_修复mysql slave复制1032错误
  5. King Gym - 102471H
  6. 5分绩点转4分_高考语文如何考上120分?衡中老师建议:这5点高中生必须重视
  7. poj 2502 Subway dijkstra基础 !!!!入门题
  8. Asp.net常用的51个代码(非常实用)
  9. 企业安全管理的内外合规之ISO27001标准详解
  10. Adreno GPU上Android 游戏开发介绍 (3)
  11. RK3399平台开发系列讲解(内核驱动外设篇)6.8、视频解码芯片GM7150驱动的添加
  12. python画画excel_用Python在Excel里画出蒙娜丽莎的方法示例
  13. 简单的使用EA进行需求管理
  14. hive中的distribute by、sort by、cluster by
  15. 马云:阿里巴巴要培养更多的京东并让这些企业挣钱
  16. 普通IPC接入神目爱买系统操作说明(智能人脸抓拍盒利旧方案)
  17. 删除+mysql+用户密码_误删除mysql中的所用用户,如何重新设置root账号和密码
  18. 计算机的r进制,进制转换(十进制转R进制)
  19. 同宇新材再更新招股书:继续冲刺创业板上市,计划募资13亿元
  20. http网页返回状态码含义

热门文章

  1. C#OOP之一面向对象简介
  2. Java中isAssignableFrom()方法与instanceof()方法用法
  3. Codeforces 437D 贪心+并查集
  4. 妙用遨游抓包找fckeditor上传木马路径
  5. [导入]如何动态生成table(javascript)
  6. javascript的万能查询器根据网上一些朋友的代码个性后得到.
  7. JAVA 学生信息管理系统
  8. 7-56 家庭房产 (25 分)
  9. R7-9 模拟EXCEL排序 (25 分)
  10. cocos2dx热更新tmx的一个坑