关于数据库:DBA100人李建明一名普通DBA的14年技术之路与成长智慧

38次阅读

共计 4999 个字符,预计需要花费 13 分钟才能阅读完成。

转载源:“OceanBase 数据库星球”服务号

“DBA100 人”专访打算是 OceanBase 围绕资深 DBA 进行的人物专访流动,旨在通过人物故事、职业倒退经验以及日常工作中遇到的技术难题和实际案例,将来对技术趋势的想法,心愿他们的成长之道可能给到各行业 DBA 一些倡议和思考。


编者按

DBA 如何疾速定位故障?如何做好性能优化?如何做好技术选型与技术体系建设?

明天《DBA 100 人》第 1 期带你理解一位领有十多年职场教训的资深数据库专家 & 运维人——云南某银行信息科技部运维核心经理,他曾负责主机、中间件、数据库的保护;参加银行外围零碎、领取零碎的开发;领导运维体系、应急容灾体系、监控体系的建设,心愿他的教训能给你带来参考价值。

2001 年,这个问题对于正在报考大学意愿的李建明而言,无所不知。和许多因为“喜爱玩电脑”和感觉“编程乏味”的人不同,李建明高中时都未曾接触计算机,只因那时计算机还未在全国校园遍及,他只曾听人说起,学计算机能在毕业后找到一份不错的工作。

就这样,李建明成为中国第一批学习信息安全技术的本科生,在校期间还兼职开发了办公软件、论坛、博客等,第一次感触到了编程的乐趣:“我很享受这种从无到有,一步一步把产品做进去的过程”。因为信息安全技术的常识比拟宽泛,对于想在计算机领域操之过急的李建明而言必须深刻工程,打好编码的底层根底。因而,他在报考研究生时抉择了系统分析与集成业余。对于业余的抉择,李建明认为一个重要的判断因素是“将来这条路是宽还是窄,艰深地说就是将来择业时,你所选方向的市场需求量是大还是小?还能够联合本人的趣味思考,在本人感兴趣的畛域或者会更加顺利。”

这次抉择,为李建明进入数据库畛域,成为一名 DBA 埋下了伏笔。

成长中的 DBA:疾速定位故障,分明零碎运行机制

2008 年,研究生毕业的李建明入职正值电子化改革高速发展期的某信用社,参加外围零碎和领取零碎的保护与开发工作。早在 2004 年,国务院要求深入农村信用社改革,某信用社响应国家号召,在 2005 年成立了科技结算核心,建设了信息系统,此举也为客户带来了更不便、快捷的金融服务。但一直上涨的交易量给零碎带来了挑战,零碎稳定性的保障难度一直加码。

“快”是一大挑战

信用社信息系统的搭建正是由李建明所在的科技结算核心负责,因而,从入职起他就一边负责零碎的保护,一边优化零碎,工作之余还自学 DBA 相干的常识。作为系统维护人员,李建明须要在零碎出错时,及时定位故障并疾速修复。而要做到“快”,对于初入职的“技术小白”而言却很有挑战。

李建明的方法是搞清楚零碎运行机制、执行流程。当零碎报错时就能够很快地查问到哪些账务是谬误的,以及这种谬误会在什么状况下呈现。

一般来说,运维人员会感觉利用零碎永远都是缺文档的。开发人员可能不会将文档写得全面。因而,运维人员在保护零碎时就须要多钻研。比方,理解零碎架构与业务架构及其技术实现门路,理解零碎表构造就能根本掌握业务构造,理解操作系统的命令就能把握零碎的构造。此外,还要进一步学习零碎组件,如钻研数据库的表构造。

通过一直地深刻理解零碎各个层面以及一直向下层摸索,逐步分明零碎的运行机制与执行流程,并在一次又一次的假如问题与验证答案中把握真谛。当“试验”做得足够多时,天然就能把握疾速定位故障并修复故障的能力。除此以外,李建明花了七八个月的工夫通读零碎次要的源代码。这段时间的钻研与自学,不仅使李建明能够在零碎出错时疾速找到问题,也让他的技术能力与代码品质都失去了迅速晋升。

2010 年,李建明也因为两年的优良体现,正式成为了一名系统管理员兼数据库管理员(DBA),负责零碎的稳固与高效运行,并治理和保护数据库、操作系统、应用软件、中间件等。“过后有两个系统管理员,只有呈现技术故障,咱们都须要染指解决”。而他在这两年对系统的钻研与摸索,使他对系统根本一目了然,对新的工作工作得心应手。

摸索、踩坑、学习

这些问题对于一个成熟的 DBA 而言都不算难。但对于成长中的 DBA 而言,须要一直在实践中摸索、踩坑、学习。

例如,数据库连接池呈现故障时,教训较少的 DBA 可能会认为是连贯数量不够,于是一直创立更多的连贯,当连接池占满时也没能解决问题。因为连接池满只是一种景象,解决基本问题还需从景象看实质。在一些状况下,的确存在业务量过大的起因,但在大多数状况下,业务量不会忽然增大,连接池满的起因可能是新业务不高效,导致连接池梗塞或者连接池没有及时开释。这时,一味地加连贯只是延缓零碎梗塞,并不能从实质解决问题。

再例如,产生长事务问题导致业务中断时,对原理不相熟的 DBA 只会傻傻地期待事务回滚。但积攒肯定教训后,就会晓得,其实能够通过一直减少事务日志文件,来保障业务失常运行的过程中将事务回滚实现。

“系统管理员的工作,让我对软件系统有了更深刻的理解。从实践到实际,积攒了丰盛的故障解决及性能优化教训,晋升了技术自信心”,李建明如是说。同时,他总结了保障系统稳定性及定位故障、优化性能的教训。

作为 DBA,保障系统稳定性是重中之重,李建明认为须要做好三项工作。

第一,预防,即关注网络、存储、计算资源,以及操作系统等基础架构的布局。确保根底框架放弃绝对的对立。

第二,在零碎失常运行时,重视从业务视角察看零碎运行是否有异样,是否处于亚健康状态,做好预警、应急等方面的可观测性建设,欠缺容灾体系和标准化操作治理。

第三,应急,即通过零碎架构定位故障,再联合监控零碎辅助剖析问题。 对于故障定位与性能优化,可从三方面发展:

1)确认零碎架构和业务架构,站在全局的角度排查问题;2)关注各种指标,如常见的 CPU 内存、I/O、负载、业务量,业务的成功率、响应工夫等;3)在压力场景下,从前到后排除每个模块的性能体现,或者是一些流动的概要信息和详细信息,包含以后零碎正在做的一些操作。比方调用了什么函数,执行了什么 SQL,以及每一个线程正在执行什么函数,甚至关注网络传输包的响应效率和网络提早等问题。

此外,为了防止各模块负责人之间推卸责任,须要有一个技术交融的团队,在应急时每个人都能统管全局,疾速上手解决问题。

经验丰富的 DBA:数据库选型不求最贵,只求最好

在某信用社的十年,李建明从懵懵懂懂的应届生成为了经验老到的系统管理员与高级工程师,该信用社的电子系统也从撑持上百万账务交易量倒退为撑持上千万账务交易量。如果说信用社是李建明职业生涯的基石,是造就他职业技能的摇篮,那么银行就是他十年职业技能与教训的高级试炼场。

自 2018 年李建明退出云南某银行,负责运维团队的治理与运维体系、应急容灾体系、监控体系的建设。另外,在 2021 年参加了一项看似离 DBA 很边远的工作:数据库选型。

不以业务为根底的选型就是耍流氓,想做好技术选型, 首先要对市场中哪些数据库能够作为备选有肯定的理解。 李建明认为,一款优良的数据库产品应该像 Informix 一样稳固、简洁,同时又能像 Oracle 一样领有丰盛的内置零碎表,且具备高性能个性。还应该达到 ACID(Atomicity、Consistency、Isolation、Durability,即或称不可分割性)、原子性、一致性、隔离性、持久性)的要求,另外,保障利用的透明性是不可或缺的能力。数据库还应该给予 DBA 足够的掌控感,让 DBA 看到他和数据库交互的过程中应用了什么工具、耗费了多少 CPU、用了多长时间,以及做过哪些操作。

其次,针对业务个性,抉择“最优解”。 以李建明以后所在的银行行业更换数据库时的技术选型为例。

大部分银行都会应用较为成熟的 Oracle 数据库,应用 Oracle 的益处在于其文档、书籍等材料较全,工具丰盛且生态成熟,遇到问题时能复用别人的解决方案或比拟疾速地找到懂 Oracle 的开发者。但随着银行数据量的日益宏大,Oracle 的数据处理能力显得顾此失彼,在做异地多活的时候也显现出了短板,Oracle 的全局缓存机制会使 A 客户的数据跑在 A 核心,B 客户的数据跑在 B 核心,如果穿插跑会导致性能极大地衰减。另外,硬件投入老本、软件应用老本都在一直减少。可替换数据库谈何容易,李建明所在的银行在数据库选型上陷入两难地步。

其实银行真正须要的是一个性能更好且老本更低的数据库,可能灵便地扩容、缩容,在业务量较低时缩小节点,在应答交易峰值时减少节点。将对于传统的集中式数据库 Oracle,分布式数据库仿佛是新的抉择方向。

从零碎角度而言,比照目前市面上优良的分布式数据库,李建明认为,数据库的架构应该由其自身决定,而不是由下层利用和 DBA 总关注它的数据分布机制,就这一点,便可能排除一些数据库选项,OceanBase 数据库因为其一体化的架构占据了劣势。从扩、缩容角度而言,有数据库级、表级、行级的弹性,数据库级别的扩、缩容不够粗疏,而行级的扩、缩容对于以后业务交易量而言还用不到,因而,表级扩、缩容的 OceanBase 便是不错的抉择,且 OceanBase 的三地五核心可能做到不失落数据。从性能角度和成熟案例这两方面来看,经验过大型流动考验的数据库产品,OceanBase 较为出众,曾经稳固撑持了十年的“双 11”流动,并通过支付宝、网商银行等的验证。而且在性能测试时,达到了 8000 TPS(每秒事务处理量)。

因为云南某银行是在传统的外围零碎根底上应用分布式数据库。因而在综合思考后,认为 OceanBase 是更适宜的抉择。 参加了此次数据库选型的李建明总结了四点教训:

第一,国产数据库以后的产品和技术实力也在逐渐晋升,能够作为选型思考的一部分。

第二,面对日益宏大的数据量,分布式数据库是较好的抉择。

第三,抉择分布式数据库时,思考数据库的 ACID。

第四,思考对利用的革新水平及兼容度。思考数据库的性能、体量以及对硬件的兼容度。

给 DBA 的七个成长倡议

在采访的最初,谈及一名优良的 DBA 应该具备哪些素质或能力时,李建明依据本人十多年的职场教训,分享了他的认识并给出了七个倡议:

  1. 具备扎实的数据库实践功底。 比方数据库系统的概论、数据库的外围概念、分布式数据库原理等,实践能为工作中的实际提供宏观指导。
  1. 相熟软件开发基础知识和技术架构。 DBA 或者不须要写好代码。但如果他不相熟代码,比方不晓得代码怎么写进去的、怎么做负载平衡,怎么连贯数据库,以及不分明常见的框架,那么他可能在排查问题时只会说“我感觉数据库没有问题”,更不能站在全局角度保障系统的稳定性。
  1. 相熟操作系统的操作及性能调优。 数据库最终还是要跑在操作系统上。对于操作系统的操作熟练度能够通过日常工作积攒,而对于性能调优,能够通过浏览官网文档中的阐明来把握,比方理解参数的意义和批改参数会带来的影响,并在日常工作中多入手。
  1. 纯熟的数据库运维操作。 尤其要通过高并发、大数据量的洗礼。操作的熟练度更多是靠量的积攒。至于能不能碰到高并发场景,由所在企业的业务决定。比方撑持小的业务量的 Oracle 数据库,很多时候依照默认参数就能够运行得很好。DBA 不会遇到较大挑战,顶多是扩大存储空间。因而难以积攒这方面的教训。
  1. 越是难懂的实践,越应该致力把握。 对于泛滥的技术常识,先做到学会其中一个知识点并达到肯定深度后再横向发展,如果你相熟多项技能,且每项技能只停留在表层,那么你在技术畛域很难达到高层次。
  1. 放弃对常识的好奇心,保持一生学习。 对于技术人而言,想学习 IT 实践能够浏览技术书籍;有针对性地学习零碎的实操教训能够用极客工夫;学习业余畛域的技术常识,能够浏览厂商的官网文档;遇到“疑难杂症”时能够浏览 CSDN;对于学科类与常识性的内容,就用失去 App;钻研强实践、学术型的常识能够翻看论文。
  1. 造就本人的逆向思维和结构化思考能力。 突破思维惯性设想多种可能性,尤其是向两个极其方向去思考。一直问问题,颠覆本人的假如并验证新的假如。

如果能给年老时的本人一些倡议,李建明示意 “吾生有涯而知无涯,要舍得放弃,找到本人最感兴趣或者最善于的方向,下笨功夫、练就必杀技。还要多学一些跨学科的基本原理,拓宽自我的知识面,晋升多维思考能力,并且要勤于思考、有打算的多入手。” 与泛滥数据库从业者共勉。


对于作者

李建明

目前在云南某银行负责信息科技部运维核心经理。领有零碎分析师、Elasticsearch 认证工程师、Kubernetes 认证管理员、DevOps Master、Oracle 认证专家、OceanBase 认证专家等资质。

正文完
 0