前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >维护之夜,说点故事和经验

维护之夜,说点故事和经验

作者头像
jeanron100
发布于 2021-04-23 06:19:47
发布于 2021-04-23 06:19:47
4150
举报

人内心的默契就是这样,今天要写的标题和几年前一模一样,干脆在原来的基础上做一些补充。

今晚是一个维护之夜,出于蓄势待发状态,对于我来说,每到这个时候就会想起自己这些年熬的那些夜,还是蛮难忘的。

举几个自己印象深刻的维护之夜吧。

1)印象最深刻,压力最大的维护是多套Oracle数据库从10g升级到11g,在前期做了多轮测试,在实际操作还是碰到了不少ORA-00600的错误,不过前期的问题都成功化解,而在最后启动服务的关头,服务抛出了一个奇怪的错误,记得当时情况已经很紧急了,如果修复不了,所有的服务都要回退,当时是满世界的打电话求救,唤醒了全球的多个技术专家,有的定位是bug,然后在建议之下打了补丁,但是还是没有效果,还找了国内的一个前辈帮忙分析问题,最后戏剧性的是,修复的操作竟然是重新清空一下回收站,具体细节忘记了,但是这个神一样的操作让我们和原厂都感叹不已,因为在当时原厂已经紧急开了case。 接下来的第二波压力是关于业务异常,有些业务存在连接异常,导致数据库开启了5000连接依然连接池溢出,在这种情况下发挥了我的开发技能,快速写了释放连接的脚本,同时开始了代码分析,因为我有开发的代码权限,所以我从代码层面去做一些分析,没想到竟然很快找到了导致连接异常的代码片段,当发给泰国的开发团队时,他们还是很吃惊的。

2)有一次大型维护的时候,登录了一套准生产测试环境,做了下业务变更升级,没想到线上和测试环境的模板配置不一样,结果就想当然在线上环境点击了YES开始自动升级,没想到整个线上环境开始了一系列的不可控操作,于是乎整个业务系统全服回退,这个事情对我们造成了很深刻的教训,而我内心也是很煎熬的,在几个月的时间里都心神不宁。

3)在国内的一次大型维护,想想都是满满的使命感,差不多有13套环境是在1个多小时内完成,有切换的数据库,有做数据库升级的数据库,有做跨平台迁移的数据库,没想到预估的3个半小时结果在1个小时以内就全部完成了。但是戏剧性的一幕发生了,开服的时候,发现用户充值失败,结果留给我们的时间就很短了。当时记得气氛很紧张,领导拍板,如果10分钟内解决不了,就全服回退。当时看着同事在那里手工敲一些系统命令,带着压力还多次敲错,我赶紧在另一半开始拿出自己准备的脚本开始快速排查,所幸的是在最后的关头,定位到了问题,是一个db link的问题,本质上还是多套环境的关联变更导致,修复之后大家长舒了一口气。

4)最无聊的一次维护,就是在某国内客户现场值班,被抓壮丁安排去值班,主要就是过去充人数,记得自己在椅子上摆了各种姿势睡都不舒服,看着旁边的外国小哥估计还没有倒过来时差,他们在那里看《阿凡达》,后来才知道他们是特派过来的DBA,系统迁移之后,他们负责清理数据。

5)最带感的一次维护,是在一次大型迁移中,出现了性能瓶颈,导致服务回退,后来大家压力都很大,因为是一套全新的技术方案,也是在原来方案无法满足要求的前提下的改进,当然也受到了很多原厂的质疑,在压力中我们开始了地毯式排除测试,记得连续几天都是测试到后半夜,而在最后定位到问题之后,自己心里的疙瘩算是解除了,而在第二次升级的时候,记得客户的大boss也过来了,走进作战室看到一切都很顺畅,在第二天还发了表扬信。

6)这一次可能是很有特点的维护,如何摆脱常规的数据库维护影响,比如数据库需要重启,可能重启的操作需要15秒~1分钟,如何让业务的影响降低到2秒内即可恢复。看起来很普通的需求如何和业务密切配合来改进,对于运维同学来说,这种维护的意义是很特别的。

7)2年前的那次维护算是在公司内的一次练兵,算是MySQL方向的一次核心系统的切换,后端的运维操作是因为数据库bug需要重启实例,在方案设计上实现了整个集群的切换控制在5秒之内,过程都是有条不紊,可以用完满来解读。

除此之外,维护时间网络故障,DDL(rename操作)无法变更,业务脚本执行失败,服务启动失败,连接池异常等问题,数不胜数,这些都是平静表象下的风波。

当然在这之外也有几点老司机的告诫和建议:

1)维护时打开尽可能少的工作窗口,越是关键的操作,打开的窗口数量越要谨慎,这么考虑的一些因素主要还是跳转到错误的窗口,我一般建议是打开4个以内的窗口,而且最好是对称的模式,方便标记和辨别。

2)做好配置文件的备份,备份的工作在这里是重中之重,之前还碰到过一次服务异常导致中间件文件被刷的情况,所以有了备份才是救命稻草,另外有些备份需要注意不能太过于频繁,尽量不要提前很多,最好是备份操作和后续的流程都是一个人能够衔接起来,要不文件命名和备份细节会存在差异,这种差异很要命。

3)保持体力,在维护前的夜晚是很平静的,最好提前做好休息和能量补充,这个时候以能够休息保持体力为前提,尽量不要干坐在座位等到凌晨。

4)尽可能做到双人检查,凌晨的操作,如果很多同学实践过,会发现脑子不够使,有时候看到自己列的计划都感觉有些懵,所以计划内容要细,要明确,有些描述信息的描述就要增加的清晰准确,比如中间件的负载均衡,有一个操作步骤是把proxy3的服务做下变更,在这里最好把相应的服务IP端口之类的都给清晰,到了凌晨的时候再去找,去确认是很危险的,当然最怕的还是自己感觉,凭猜千万不可取。两个人能够做下检查,至少在关键操作的时候有个照应。

5) 对于不确定的操作,不要直接按回车,如果命令行窗口卡住或者是不确定的时候,不要先按回车,因为你不知道上一个命令是不是具有破坏力,或者是屏幕处于锁屏状态,良好的职业习惯应该是先按空格而不是回车。

6)通常维护操作是比较平稳的,但是一旦发生问题,那就是紧急且重要的,这种情况下一定要沉住气,同时也要做好最坏的打算和预案。

7)大维护变更前不接受额外的变更需求,这个举一个例子,在一次大维护前2小时,开发团队提交了一个紧急修复,当时没有在生产完整的测试就匆匆列入了维护清单,结果整个维护中最让人头痛的就是那个新增变更,新增的存储过程执行了2个小时,而在这2个小时内我们想了无数的补救方案,而事后的分析和优化方案可以把这个逻辑优化到1分钟以内。所以按照维护流程,我们有足够多的理由可以拒绝这种加塞需求。

8)仪式感是我认为自己在大维护中最最重要的一个环节了,有多重要呢,我觉得准备工作做到万事俱备只欠东风的状态,那么剩下的只能靠运气了。而这个运气就需要自己的一种仪式感或者默认的习惯规则。我在大维护的时候会去买一瓶饮料,哪怕不喝也会备着,这是在早些年维护中自己的一点潜意识暗示或者说是必备的一种仪式。

当然大多数的维护都是默默无闻的,一切正常就是最好的回答。我喜欢平静夜晚后的清晨,阳光照进来,感觉一切都敞亮了。

各大平台都可以找到我

  • 微信公众号:杨建荣的学习笔记
  • Github:@jeanron100
  • CSDN:@jeanron100
  • 知乎:@jeanron100
  • 头条号:@杨建荣的学习笔记
  • 网易号:@杨建荣的数据库笔记
  • 大鱼号:@杨建荣的数据库笔记
  • 腾讯云+社区:@杨建荣的学习笔记
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
外卖骑手这个职业的思考和分析
这是学习笔记的第 2300篇文章   最近在听得到头条的时候,有一篇内容感觉很不错,是《怎样当好一名外卖骑手》,本来是的带着一丝的娱乐意味来听的,没想到确实让我有了新的认识。    我整理了下思路,打算和大家简单聊聊。 我会按照两个维度来聊关于外卖骑手这件事,分别是: 1)打破认知思维,重新看待外卖骑手 2)如何在长期,持续的跑单工作中提效。 首先是打破认知思维,重新看待外卖骑手,这里我没有职业歧视,偶尔会和外卖小哥聊一下,发现他们全年几乎无休,总是在争分夺秒。换了一个思路来看,外卖骑手这个职业只要勤劳
jeanron100
2022/03/16
8540
MySQL数据实时克隆的初步设计
之前我们重点建设了数据克隆的一个服务,其实起这个名字也琢磨了好久,说逻辑备份恢复很多业务同学都不大能理解,GET到我们要解决的问题,而数据克隆的概念就比较清晰。
jeanron100
2021/03/16
6400
移动端接入数据库故障自愈的初步实现
对于节假日,难得的假期,尤其是外出的时候碰上几个数据库报警,那些报警又属于不得不处理的时候,真是让人上火,所以也想了一些办法来尽可能杜绝和避免这种情况。
jeanron100
2021/04/02
3990
数据源集市建设的初步思路和规划
最近在对接数据流转的一些问题,发现越是了解,越是担心,因为有不少潜在的问题,所以我就在想规划和统一所谓的数据源集市,能够实现数据流转方向的一个基线标准。
jeanron100
2021/01/28
3720
盘点下这些年来改变自己的一些重要时机
这是学习笔记的第 2421篇文章   有时候想起一些工作和生活中的改变自己的机会还是蛮有意思的,绝对不是标榜所谓的成功,因为我远远达不到,仅仅是对我个人来说,回过头来看这些转折点都很偶然,有些场景到现在都难以关联起来,但是结果就是如此。所以,我觉得我们工作中不要有太强的功利性,需要多一些耐心,保持好奇心。    比如我2009毕业后工作的第一家公司,是在一个社会招聘会中碰到的,当时大环境不好,就业形势还是比较严峻的。我在诺大的会场中转来转去,没有方向,基本都是一些偏技术支持的岗位多一些,当时这家招聘的要
jeanron100
2022/05/27
2430
盘点下这些年来改变自己的一些重要时机
关于业务存储结构扩容的方案设计和思考
这是学习笔记的第 2417篇文章   今天和研发团队沟通一个数据存储方案的设计和改造,大体的背景是在数据库中有些id类数据,如果数据类型是int,则存在一定的溢出风险,在程序层面需要提前考虑修改为int64,在MySQL中可以简单理解为bigint.   我们假设这个id字段为uid,如果是用户业务,则很多业务逻辑都是和这个uid强相关的,那么就会存在大量的业务梳理和研发代码的接入,如果底层数据存储的压力和风险过大,则这个事情的改进周期和影响范围就会更难以评估和控制。      所以这个问题从长期来看是未
jeanron100
2022/05/12
6480
关于业务存储结构扩容的方案设计和思考
关于数据库服务质量的问卷调研设计
最近在做年度规划的时候,一直在思考一个问题,怎么才能能够得到业务侧对我们服务质量的想法和建议,或者换句话来说,我们的价值和表现如果自我评判,一般来说都会有失偏颇,而且相对容易乐观悲观两极化,所以对于评判的形式,经过评估觉得还是问卷的形式要好一点,最主要的一个原因是我们要想得到别人对我们的评价,我们最好能够自己把问题想明白,理清楚了。
jeanron100
2021/03/16
8980
MySQL中间件集群平滑迁移的初步方案
最近有一套MySQL集群环境的服务器即将过保,为了避免后续带来的一些额外问题,需要提前考虑服务器的迁移计划,但是现在的线上业务,申请维护时间是比较困难的,而且在线变更的容忍时间是很短暂的,一般在业务层也有容错机制,比如超时时间,容错次数等,所以希望整个方案是可控并且变更时间对于业务侧是清晰的。
jeanron100
2021/03/16
9880
MySQL 8.0的预研清单和计划
最近在团队内聊了下关于MySQL 8.0的特性调研工作,其实线上已经稳定运行了近20%的业务,但是很多思维模式和习惯还是继承自5.7,所以需要与时俱进,在技能上能够引导开发同学,在后端的支持上能够做到游刃有余。
jeanron100
2021/04/22
6380
我们为什么在MySQL中几乎不使用分区表
在Oracle中,使用分区表是一种很自然的事情,数据库容量基本都是500G起,大小在5T以上都是很常见的。
jeanron100
2021/03/16
1.8K0
灵魂2问12答:DBA的核心价值和最重要的能力是什么?
记得自己在去年的时候私信问了一些朋友关于DBA核心价值和最重要的能力的问题,听到了很多不同角度的思考和反馈,今天整理了下,时隔半年,也算是完成了一件心头的事情。
jeanron100
2021/06/09
8500
关于周期的思考和建议
今天脑海里蹦出了一个词“周期”,对的,周期。我觉得好像是一只无形的手,像是路口的红绿灯,路边的指示牌,能够通过这些规则的变化让交通秩序稳中有序。
jeanron100
2021/04/02
5100
从生命周期的角度来规划数据库运维体系
最近在和团队规划OKR目标的时候,我们讨论了很多问题,我先抛砖引玉,列举了一些现有的问题,打算按照推导的方式:
jeanron100
2021/01/13
1.2K0
教孩子学习乘法和除法,我算是绞尽脑汁了
这是学习笔记的第 2416篇文章   说实话,数学不是我的强项,因为对我来说,数学是那种少有灵感的学科,我在这方面的学习只能靠最朴素的练习。孩子是一面明镜,在教孩子的过程中我时常能够发现自己曾经的影子,我发现孩子在学习上难以保持专注,同时不会刻意去抓重点,我有一个能够审视自我的习惯,我经常会反思自己哪里做得不够好,所以两者结合起来,我发现教孩子学数学这件事情好像可以再努力一下。   我观察到孩子学习的一些现象,有时候感觉挺无奈,其中的一个重要原因是如果学习效率不高其实会浪费很多时间,这些时间用来玩就好了,
jeanron100
2022/05/05
8600
教孩子学习乘法和除法,我算是绞尽脑汁了
梳理工作的一点小结-20220309
这是学习笔记的第 2407篇文章   最近在梳理工作的时候,做了一些小结。   首先是对于工作情况的量化,如果我们只是说自己做了什么什么事情,可能洋洋洒洒几十页ppt,也会让别人看得云里雾里,如果不是这个专业方向的人,基本都会有点晕菜,所以对于这个事情的抓手就是需要有一个参考基准,有了这个基准,你所做的事情都有一个对比,到底是多了还是少了,多了多少,少了多少,具体哪些多了,哪些少了都可以通过数字量化得到答案。     比如对于数据库服务能力的量化,我是选用了信通院开发的这个模型,通过评估惊人的发现我们做
jeanron100
2022/03/10
4850
12个乒乓球称重3次寻找次品的计算题,可真是难为我了
前几天在地铁上看到一道题:12个乒乓球,一个次品,用无砝码天平称三次,找出次品。
jeanron100
2021/06/09
1.2K0
最近在琢磨的一个问题和我的尝试
这是学习笔记的第 2409篇文章     最近在琢磨一个问题,那就是我们每天上下班的路上会接收大量的信息,但是经过时间的沉淀之后,能够留下来的信息是少之又少,这一点让我很焦虑。      像开车上下班的路上,我有时候会听一些访谈和解读,带给我最大的收获是听起来有道理,但是要让我说个一二三,就感觉词穷了,而过了一段时间之后,其实这种听的效果跟没听没什么差别。     对此我做过一些尝试,比如我在路上听《冬吴同学会》,会听个大概,等到公司之后的时候就会找一下相应的文字版,从大段的文字中找到要点和观点,但是这种
jeanron100
2022/03/17
2980
MyCAT集群在线扩容的场景小结
最近线上有一套集群的存储存在瓶颈,导致经常会有报警,如果按照存储现状和稍后的假期的数据增长,很可能会带来一些意料之外的问题,所以整体评估后,决定对已有的集群先做在线扩容,待假期结束后再做缩容。
jeanron100
2021/02/25
6240
MyCAT集群在线扩容的场景小结
关于随机恢复性能优化的小结
最近在进一步优化随机恢复的成功率问题,本来预计是2周内能够快速结束,从1个9的恢复能力快速提升到2个9,结果这个Flag立下了,但是最终的结果和付出的努力远比想象中要高。
jeanron100
2021/02/25
2860
关于随机恢复性能优化的小结
一种探索中的学习方法:自己和自己对话
最近调整了下作息,基本上8:00就到公司了,简单整理完,还剩下差不多一个半小时的时间,这一个多小时是尤其重要的,坐在工位上不算是一个封闭的空间,而且在电脑前的思考其实还是比较受限,于是我最近在尝试一种新的学习模式:自己和自己对话。
jeanron100
2021/09/24
3960
相关推荐
外卖骑手这个职业的思考和分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档