返回顶部
首页 > 资讯 > 数据库 >zabbix 一次惨痛的分区经历
  • 754
分享到

zabbix 一次惨痛的分区经历

2024-04-02 19:04:59 754人浏览 薄情痞子
摘要

问题今天来到公司,像往常一样打开zabbix,突然发现没有数据被收集,于是快速检查了其他的图形,发现都没有数据,于是定位到了服务端的问题,检查日志发现:zabbix日志突然报查询history和histor

问题

今天来到公司,像往常一样打开zabbix,突然发现没有数据被收集,于是快速检查了其他的图形,发现都没有数据,于是定位到了服务端的问题,检查日志发现:zabbix日志突然报查询history和history_uint失败,分区里找不到这个 clock?zabbix  一次惨痛的分区经历

解决过程

以下仅是以history为例的解决路线,暂不探讨history_unit

  1. 初次认知是分区问题,分区不够了,开始在网上查分区创建方法 
    alter table history partition by range (clock)(partition p1 values less than MAXVALUE); 
    在此我给了MAXVALUE一个很大的值,执行了20分钟没有执行完,发现这种方式不行

  2. 检查是不是设置了自动分区 
    show create table history; 
    发现有一大堆以clock的分区,发现clock是日期,正好是今天凌晨,而一上午没有生成分区,所以导致数据存不进去。知道了原因,先解决,先不探讨为什么有自动分区的问题。

    zabbix  一次惨痛的分区经历

  3. 发现问题了,就先解决问题,创建分区吧 
    CALL partition_create("zabbix", "history", "p201706140000", 1497456000); 
    提示没有这个partition_create存储过程,所以无法执行,挺纳闷,先不解决这个; 
    创建这个存储过程,建议参考:https://www.zabbix.org/wiki/Docs/howto/Mysql_partition#partition_create ( 网上不靠谱的太多了) 
    进入数据库执行下面语句:(root登录,不知道有没有影响)

DELIMITER $$CREATE PROCEDURE `partition_create`(SCHEMANAME varchar(64), TABLENAME varchar(64), PARTITIONNAME varchar(64), CLOCK int)BEGIN
        
         DECLARE RETROWS INT;
        SELECT COUNT(1) INTO RETROWS        FROM infORMation_schema.partitions
        WHERE table_schema = SCHEMANAME AND table_name = TABLENAME AND partition_description >= CLOCK; IF RETROWS = 0 THEN                
                SELECT CONCAT( "partition_create(", SCHEMANAME, ",", TABLENAME, ",", PARTITIONNAME, ",", CLOCK, ")" ) AS msg;
                SET @sql = CONCAT( 'ALTER TABLE ', SCHEMANAME, '.', TABLENAME, ' ADD PARTITION (PARTITION ', PARTITIONNAME, ' VALUES LESS THAN (', CLOCK, '));' );
                PREPARE STMT FROM @sql;
                EXECUTE STMT;
                DEALLOCATE PREPARE STMT;
        END IF;END$$
DELIMITER ;

然后执行创建 
zabbix  一次惨痛的分区经历

ok,此时把不存在分区的表都创建上,然后重启zabbix。

  1. 现在要查找问题的原因了 
    因为前面处理zabbix的同事,做了分区分表,然后又在cron内设置了定时任务,定时添加几天的表区 mysql -uzabbix -pxxx -e "CALL partition_maintenance_all('zabbix');" 因为我接手后,不知道这是什么,把zabbix服务器归纳整理后,mysql密码变了,执行不了了,消耗了一上午的时间,不过清晰了zabbix分区过程,也是有收获的

  2. 现在要开始总结下分区分表了 
    查看存储过程:select specific_name from mysql.proc ; 
    查看过程逻辑:show create procedure partition_create \G 
    删除存储过程:drop procedure if exists partition_maintenance_all ; 
    查看存储过程:show procedure status like 'partition_maintenance%' \G; 
    修改存储过程:ALTER {PROCEDURE|FUNCTION} sp_name [characteriss] 根据官方文档,创建存储过程,包括:create、drop、maintenance、verify、maintenance_all 最好根据自身情况对maintenance_all,进行修改,用于减轻数据库压力;

DELIMITER $$CREATE PROCEDURE `partition_maintenance_all`(SCHEMA_NAME VARCHAR(32))BEGIN
    CALL partition_maintenance(SCHEMA_NAME, 'history', 15, 24, 7);
    CALL partition_maintenance(SCHEMA_NAME, 'history_log', 30, 24, 7);
    CALL partition_maintenance(SCHEMA_NAME, 'history_str', 30, 24, 7);
    CALL partition_maintenance(SCHEMA_NAME, 'history_text', 30, 24, 7);
    CALL partition_maintenance(SCHEMA_NAME, 'history_uint', 15, 24, 7);
    CALL partition_maintenance(SCHEMA_NAME, 'trends', 60, 24, 7);
    CALL partition_maintenance(SCHEMA_NAME, 'trends_uint', 60, 24, 7);END$$
DELIMITER ;
  1. 最后做项收尾工作 
    为了避免我们经常去执行创建删除过程,创建删除分区,我们要充分利用partition_maintenance_all存储过程,加入cron中 ,每周一八点执行一次,创建及删除过程
    0 8 1 * * mysql -uroot -pxxx zabbix -e "CALL partition_maintenance_all('zabbix');"


您可能感兴趣的文档:

--结束END--

本文标题: zabbix 一次惨痛的分区经历

本文链接: https://lsjlt.com/news/43712.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • zabbix 一次惨痛的分区经历
    问题今天来到公司,像往常一样打开zabbix,突然发现没有数据被收集,于是快速检查了其他的图形,发现都没有数据,于是定位到了服务端的问题,检查日志发现:zabbix日志突然报查询history和histor...
    99+
    2024-04-02
  • 记一次惨痛经历(安装Android Studio3.6)
    前言:      首先,坐下来想一想,到底有多惨痛。 目的: 安装AS3.6 时间消耗1 2.26号17点到8点半(3个半小时) 时间消耗2 ...
    99+
    2022-06-06
    Android Studio studio Android
  • 亲身经历的一次OCM考试
      2017年12月下旬参加的11G OCM考试,2018年1月中旬收到了ORACLE发来的考试通过邮件。   感谢我的家人的支持和付出。   感谢上海交大继续教育学院的赵老...
    99+
    2024-04-02
  • 亲身经历的一次Mysql OCP考试
            2020年5月下旬参加的Mysql OCP考试,考完10分钟后就收到邮件得知自己通过了考试,1天后就在Orac...
    99+
    2024-04-02
  • 一次JavaScript正则的诡异经历记录
    目录背景问题原因总结事情是这样的,最近在写一个Node功能的时候,遇到了一个正则的问题,觉得挺有意思的,就记录一下经历和最终问题原因,希望也能帮助到同样遇到的同学。 背景 我有一个N...
    99+
    2024-04-02
  • 记一次真实的网站被黑经历
    【本文转自爪哇笔记  作者:小柒2012 原文链接:http://tech.it168.com/a2018/0629/3212/000003212205.shtml】前言距离上次被DDOS攻击已经有10天左右的时间,距离上上次已经...
    99+
    2023-06-04
  • 记一次DEDE织梦网站恢复的经历
    前言:一个处于瘫痪的网站,之前使用DEDE织梦搭建,由于之前被挂马,被迫关停,好在程序有备份,数据库已经恢复并清理,DEDE系统升级之后,显示主页为空白内容。解决过程:1、拿到管理员用户密码之后,登陆ded...
    99+
    2024-04-02
  • 一次排查@CacheEvict注解失效的经历及解决
    目录排查@CacheEvict注解失效下面是我通过源码跟踪排查问题的过程小结一下说说spring全家桶中@CacheEvict无效情况举个例子排查@CacheEvict注解失效 我简...
    99+
    2024-04-02
  • 一次非常有意思的 SQL 优化经历:从 30248.271s 到 0.001s
    索引优化 单列索引 多列索引 索引覆盖 排序 参考文章 场景 我用的数据库是mysql5.6,下面简单的介绍下场景 课程表 create table Course( c_...
    99+
    2020-06-25
    一次非常有意思的 SQL 优化经历:从 30248.271s 0.001s
  • 记一次生产数据库"意外"重启的经历
    前言 在一个阳光明媚的下午,电脑右下角传来一片片邮件提醒,同时伴随着微信钉钉的震动,打开一看,应用各种出错,天兔告警,数据库服务器内存爆红,Mysql数据库实例挂掉了。 排查 先交代一下数据库版本: my...
    99+
    2024-04-02
  • Java异常区分和处理的一些经验分享
    异常处理的一些经验总结这篇文章主要是对Java异常选择和使用中的一些误区的总结和归纳,希望各位读者能够熟练掌握异常处理的一些注意点和原则。只有处理好了异常,才能提升开发人员的基本素养,提高系统的健壮性,提升用户体验,提高产品的价值。废话少说...
    99+
    2023-05-30
    java 异常处理 ava
  • 解决Nacos服务器连接问题:一次完整的排查经验分享
    🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——ὀ...
    99+
    2023-10-11
    服务器 运维
  • 阿里云服务器的区别一次详细的比较和分析
    在选择阿里云服务器时,用户可能会面临一些困惑:不同的服务器类型、配置和价格之间是否存在显著的区别?阿里云服务器之间是否真的存在显著的性能差距?这些问题在本文中将得到解答。 阿里云服务器是阿里云提供的一种高性能、可扩展的云计算服务,可以帮助用...
    99+
    2023-11-18
    阿里 区别 服务器
  • PHP如何计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)
    这篇文章将为大家详细讲解有关PHP如何计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写),小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP 中不区分大小写的字符串最后一次出现位置 引言 在 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作