DBA线上操作要知道的那些事

简介:

根据莫非定律1:「凡是可能出错的事必定会出错,任何一个事件,只要具有大于零的机率,就不能够确定它不会发生。」这句看似箴言的话,想必每个运维从业人员感触非常深刻。本文从 DBA 线上操作的角度,谈谈自己的看法。

工作日,DBA 会处理大批工单;非工作日,DBA 在时刻准备着救急。亦即,DBA 每时每刻都有线上操作的需要。那么问题来了,个人的状态是不定的,包括心理状态、身体状态。时刻保证临危不乱,这是 DBA 重要的素质之一。线上故障,分秒必争,不及时的处理、不善的操作都很有可能给公司带来不同程度的损失。线上操作需要求稳,本文给出笔者的点滴思考。

© Pierre Puvis de Chavannes/The Poor Fisherman, 1881/Wikipedia2

第一,处理工单、凌晨维护、处理紧急故障之前,梳理流程,准备必要的资料。一个优秀的 DBA,不是求速度,不是求效率,而是求稳。出错的概率低,你给别人的感觉就会比较靠谱。有经验的 DBA,线上操作就是复制粘贴,宁愿相信 0 和 1,也不愿相信自己和别人。每次处理工单、凌晨维护,笔者都会养成一个习惯,梳理流程,准备线上服务器 IP 列表、需要的脚本、有可能使用到的命令、相关的文档等等。这样的好处是,心里有谱,不至于慌乱。即使遇到突发状况,也会相对从容。当然,紧急故障没有这么多时间给你准备,但至少也要准备常用的命令。这里有个小建议,使用 Evernote 保存常用的命令,当然,涉及公司敏感信息的,不能留。临场发挥,尽可能地避免手动输入,因为高度紧张的状态下,输入错误的概率比日常要高。于 DBA 而言,输入错误,带来的灾难将是毁灭性的。已经有很多类似的案例,在此不做展开。

第二,处理故障之前分析最重要。通常某个故障是不是单点的,是一个面,是一个链条。线上故障,直接受影响的就是用户,究其原因,用户层、接入层、逻辑层和数据层每一层都有可能有问题。处理故障之前,不是无谓的试错,一次不行,下次依然如故的概率相当高,然后时间就这样不知不觉地浪费了。此时应该冷静下来,思维不能单独盯在数据层,从整个技术链条考虑,这样获得的信息才是最全方位的。那么问题来了,互联网行业工作细分,DBA 很大可能没有操作数据层之外的权限,怎样做到信息相对完善,接下来就是下一个话题。

第三,学会沟通,尽可能地达到信息对称。第二点提到,DBA 更多关注的是数据层,达到整个技术链条信息的流通是相当重要的。这一点其实不是技术问题,而是一个人的软实力。关于提问的智慧3,可以参考之前笔者的文章。我们都知道,提好问题比答案本身更重要。DBA 在处理故障时,跟监控、研发、测试、产品、运维等都有可能打交道。监控会反馈受影响的范围、延时情况等等,这属于用户层;研发、测试、产品会反馈业务故障、程序日志等,这属于用户层和逻辑层;运维会反馈网络情况、流量状况、Web 服务器异常等等,这属于接入层。最后 DBA 会关注数据层,包括持久层和缓存层,然后结合不同链条的信息,综合分析,再进行相应的操作。线上操作,我们不能容忍低效甚至无效的沟通。

第四,任何操作三思而后行。DBA 应该把「备份重于一切4」铭记于心,修改任何配置文件之前先备份,慎用甚至不用 rm。对于有 DROP 和 TRUNCATE 的工单,再三审核和确认,避免无效操作。如果确实存在此类需求,应该首先确认是否有备份,备份是否可用。DBA 应该对高危操作有明确的认识,除此之外,所有的恢复操作也需要了记于心,防患于未然。

第五,事后 Review、反思、总结,形成知识库。故障是不可控的,可能是人为,可能是程序有 Bug,可能是网络故障,总之发生故障的原因千奇百怪。但故障事后的 Review、反思和总结我们可以控制。针对某个特定的故障,反思处理的流程是否有优化的地方,反思基础设施是否还有不完善的地方,反思团队出现的问题,反思和其他部门的合作是否有问题等等,然后形成会议记录、故障报告、故障总结,形成知识库,定期再次 Review,避免下次出现类似的问题。再者,还可以给新入职的员工参考,从真实案例中学习,这样进步会更快。

做好一个优秀的 DBA,技术是一方面,更重要的是个人素质。比如,你需要有良好的习惯、需要有优秀的心理素质、需要有责任心和道德、需要有良好的沟通能力……这些软实力是基石,在此基础上,拓展技术的广度和深度,这样才会有更良好的发展。

借此文章,唠嗑下最近的想法。笔者经常反思为什么会这样坚持更新博客,最近有了比较理想的答案。第一是督促自己思考,第二是为别人提供价值。先说第一点,坚持更新博客,就是在提醒自己不断思考,这样就会比别人获得更多技术之外的能力。然而,这些能力,是在枯燥的工作之作学不来的。世间的道理都很简单,大家也懂,然而真正去行动并且持之以恒的少之又少。你看了一千篇文章,读了一百本书,不去行动都是枉然。然后说说第二点,博客很重要的一点就是给读者提供价值。读者觉得你的文章能给他带来启发,这就是正向输出;读者评论你的文章、和你发邮件交流、加微信和你聊天,这就是正向反馈。你给读者提供了价值,说不定读者哪天就会给你带来意想不到的惊喜。一个长期保持高质量更新的博客,于己于他,个人认为都是瑰宝。即使现在没有兑现,将来的某个时刻会。

回到这篇文章本身,笔者时刻都在强调软实力。软实力靠的是长期的积累,需要自控力不断提高。归根结底,任何管理本质上都是对自我的管理。





作者:温国兵
来源:51CTO
目录
相关文章
|
SQL 运维 Oracle
【大数据开发运维解决方案】Oracle Sql基础查询
空字符串在oracle中常常相当于null,为什么不说空字符串等价于null呢,看案例: 可以看到,本身deptno是number类型的,而‘’字符串本身是varchar类型,这与null可以是任何类型不同,所以也就不等价。
【大数据开发运维解决方案】Oracle Sql基础查询
|
存储 关系型数据库 数据库
【DB吐槽大会】第59期 - PG 缺少便捷的坏块修复能力
大家好,这里是DB吐槽大会,第59期 - PG 缺少便捷的坏块修复能力
|
运维 Oracle 关系型数据库
Oracle运维笔记之事务回滚处理
Oracle运维笔记之事务回滚处理
1098 0
|
存储 SQL 运维
Oracle运维笔记之创建物化视图报错ORA-08102
Oracle运维笔记之创建物化视图报错ORA-08102
|
运维 监控 Oracle
3月19日直播【从12c到20c,Oracle多租户之10046跟踪PDB关库案例原理解析】
本次分享将针对DevOps代码质量审核、监控、开发环境测试、生产环境测试这四个方面存在的问题进行剖析并给出解决之道,希望能助您全面转型DevOps。
673 0
|
数据库管理
db如何快速回滚+恢复,DBA的神技能
技术人如果经常线上操作DB,河边走久了,难免出现纰漏,咋办?找DBA恢复数据呗,即使恢复不了,锅总得有人背呀。
685 0
|
Oracle 关系型数据库 数据库

热门文章

最新文章