当前位置: 首页 > news >正文

一次宕机问题的总结复盘

这是学习笔记的第 2022 篇文章


  昨天开了一个会,开完会刚打开电脑就收到了5条报警邮件,提示有4套环境发生了高可用切换,这是一套分布式集群环境,经过了长时间的测试,已经临近上线,因为业务的特殊性,出现了这样一个问题,着实让人尴尬。最开始看到这个问题的时候,是有些奇怪而且略带失望的,因为已经切换超过了2个小时,但是大家似乎都没有意识到这个问题。 

    因为这个问题还没有正式接入线上业务,所以咱不存在业务影响,但是通过这个问题发现存在着较大的隐患,而且按照这种态势下去,我们的系统迁移结果还是有很多不可控因素,所以早上和团队的同事进行了复盘。 

    首先简单说明了下这次复盘的主要目的,不是具体针对谁,而是把问题都跑出来,看看有什么好的方案加以解决。 

    问题的背景:一个分布式集群的4个节点出现了高可用切换,但是因为数据延迟过大,导致切换失败。

    对这个问题的过程进行梳理发现,一方面是因为计划外操作导致磁盘空间溢出,另一方面是存在一些配置和监控报警不到位的情况,所以这个问题给我们敲响了警钟。 

    总体来说,我梳理了如下的一些问题:

  •     监控不到位

  •     报警不到位

  •     不熟悉系统架构

  •     不熟悉业务特点

  •     计划外操作的流程不规范

  •     高可用切换失败的隐患

  •     配置导致的空间隐患

  •     数据安全存在隐患

    我来逐个展开一下。

  •     监控不到位,发现目前的集群监控是不完整的,存在一些监控盲点,需要细化和确认,保证监控的有效性。

  •     报警不到位,有些服务器有监控,但是没有配置报警选项,导致问题发生的时候产生了信息隔离。

  •     不熟悉系统架构,因为大部分的管理工作是我这边在做,一旦出现问题,熟悉系统架构的人少,难以形成有效的技术互备力量。

  •     不熟悉业务特点,对于业务不够了解,在问题发生的时候很难定位问题的瓶颈,需要结合业务特点和使用方式来进行综合评估。 

  •     计划外操作的流程不规范,比如在集群中执行了负载较高的全表DML操作,会导致集群产生大量的日志。而敏感的操作缺少有效的管理,没有提前告知团队成员,在问题发生之后,也没有关注这个操作的影响范围。

  •     高可用切换失败的隐患,高可用切换失败一方面是因为数据延迟导致,同时需要检查是否已经删除了MHA自动生成的failover标志文件,如果存在,下次切换会失败,造成难以挽回的影响。

  •     配置导致的空间隐患,对于binlog的保留周期需要做定制化配置,比如从原来的7天修改为3天,配置从库为只读状态,避免不合理的写入影响

  •     数据安全存在隐患,目前的数据管理存在隐患,对于业务开放的权限需要做到可控和有效,不能开放过高的权限,避免数据误删除。需要配置一个权限较高的管理员账号方便管理。 

  • 信息同步机制,一旦发生了数据切换,我们需要及时提醒业务方,让多方引起重视,而不是默默的处理。

    所以上面的问题经过分析之后,发现我们在工作中确实存在着很多的不足和改进空间,而这些也是我们进行数据管理的一些基本规约,即什么该做,什么不该做,需要心中有数,而对于自己的操作需要做到公开透明,至少需要明白这个操作的风险和影响,减少意料之外的影响情况。

    这个问题在这个阶段出现着实给我们敲响了警钟,而我们也不能以被动的故障来改进,而是逐步转变思路,变成更加公开透明的问题处理方式,在实际的问题处理中,做到对事不对人。

640?

相关文章:

  • 所谓简单的事情
  • 数据分析上千部动漫作品
  • 生活中的一些文字调料
  • 最近的方向调整
  • 尴尬的bug:一条查询语句让MySQL崩溃
  • 你平时锻炼身体吗
  • 数据迁移流程的优化
  • MySQL复制问题的分析
  • 秦皇岛旅游归来
  • 《MySQL DBA工作笔记》前言
  • MySQL复制的奇怪问题跟进
  • MySQL高可用方案升级规划
  • 选择和努力
  • 无论是否“去O”,这些数据库选型与运维技巧你都该知道
  • MySQL周期表管理的设计
  • 网络传输文件的问题
  • E-HPC支持多队列管理和自动伸缩
  • go append函数以及写入
  • HTTP中GET与POST的区别 99%的错误认识
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • python 装饰器(一)
  • V4L2视频输入框架概述
  • yii2权限控制rbac之rule详细讲解
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 小而合理的前端理论:rscss和rsjs
  • 学习笔记TF060:图像语音结合,看图说话
  • 最近的计划
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (10)ATF MMU转换表
  • (done) 两个矩阵 “相似” 是什么意思?
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (转)德国人的记事本
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net FrameWork简介,数组,枚举
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • @property @synthesize @dynamic 及相关属性作用探究
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ 数据结构 - C++] AVL树原理及实现
  • [BZOJ2208][Jsoi2010]连通数
  • [C++]拼图游戏
  • [GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等
  • [Java性能剖析]Sun JDK基本性能剖析工具介绍
  • [Linux_IMX6ULL应用开发]-Makefile
  • [Mac软件]Adobe XD(Experience Design) v57.1.12.2一个功能强大的原型设计软件
  • [NAND Flash 6.1] 怎么看时序图 | 从时序理解嵌入式 NAND Read 源码实现
  • [nlp] 损失缩放(Loss Scaling)loss sacle
  • [one_demo_18]js定时器的示例
  • [P4V]Perforce(P4V)使用教程
  • [POJ2104]K-th Number