DBA学习方法的那些事

0    67    1

👉 本文共约9194个字,系统预计阅读时间或需35分钟。

DBA的那些事

说起DBA,全称是Database Administrator,不是Doctor of Business Administration,千万不要误解,那可是天壤之别!尽管如此,很多人依然认为有着神秘的面纱,高深莫测,花环簇拥,是收入丰厚的一族人。实则不然,DBA说白了就一修理工。修理啥呢,不是车床机床,也不是修理啥精密仪器,修理的是数据库,仅此而已。DBA这个行业同样也经历了由萌芽,发展到鼎盛的过程。尤其是近2年海量数据的井喷以及新数据库时代,云数据时代,DBA 2.0时代的兴起。以及最近所谓后DBA时代的说法。说到DBA的工作,我们先得搞清当前几类常用的数据库。主要有两大阵营,一类是SQL,学过计算机的人应该都知道,传统数据库,诸如Oracle,DB2,MySQL,SQL serer等主流数据库。面对的是那些传统行业,比如证券,银行,电信等使用的居多。另一类是NoSQL,诸如Hadoop,MongoDB,CouchDB等,主要用于互联网行业,如在线社交系统,Amazon 的Dynamo等。对于当前这两大阵营,貌似有划江而治之势。让人不免眼花缭乱。究竟何去何从,应当更多或更深的思考,这是一个比较大的话题,暂且不表。本文主要描述一下传统DBA的那些事,也就是DBA的工作范围与职责,更多的围绕Oracle展开。本文主要从六个方面来简要描述DBA的工作。

一、数据库的整体设计与规划
有如建造一座豪华的宫殿一样,宫殿尚未动工之前,其选址,结构布局,空间利用,方位设计等必须先有一套完整的方案。数据库的规划与设计同样如此。良好的数据库架构设计直接影响到基于该数据库业务系统的整体性能。而这个架构设计又来源于对业务有详尽的需求分析,从而对现实需求进行综合、归纳与抽象并形成完整的E-R图,再由E-R图转换为相应的逻辑模式(表、视图定义等,考虑范式要求)。同时也根据业务的初期、中期及后期考虑合理的数据库存储规划以及根据数据库负载、重要程度考虑使用单实例数据库、集群、复制、镜像等等高可用策略。当然,对于数据库运行平台环境等也是一个比较重要的选择。大多数情况下,数据库的整体设计对大多数DBA而言没有机会来接触或实战,尤其是设计E-R图以及表、视图定义等,这部分通常都是由专业数据库设计人员或开发人员来完成。因此本文对此也是初步描述。如果有机会参与,不要放过。

二、安装升级、迁移部署
1、安装数据库。这个是最起码的要求了。就好比那些个developer,最开始的代码,第一句是"hello world"一样。这个是你必须会的,要掌握的。如果是SQL server安装部署就相对简单,全部图形化界面搞定,而且美观赖看,功能也很强大,电信移动也有在用。这类数据库容易上手,这也是Microsoft的强项之一。唯一的缺憾就是不能垮平台。与之相比的复杂的安装部署那就是Oracle,DB2,MySQL等这几类数据库了。先得把整个环境搭建好,诸如内核参数,环境变量,rmp package之类的搞定,没得一个安装参考手册,有得你整。尤其是部署生产环境,每一个参数都得结合其数据环境考量规划。这个需要一定的经验。缺省值有时候不一定能满足现状。尽管如此,跨平台特性则成为这几类数据库被广泛使用的重要原因之一。管得你Windows,Linux,还是Unix,都有对你胃口的。

2、升级数据,更新patch等等也是司空见惯之事。那个Bug多的是难以数计。有道是,白天监控数据库,夜晚挑灯战bug。这个部分比较重要的是需要考虑更新patch等之后产生的影响以及做好回退措施。谁都难以绝对保证明地球明天照样转。所以得靠自己把握。

3、数据库迁移。这种情形也是常见之事。随着业务的增加,对性能要求的提高,以及更新换代,需要升级不得不实施数据库迁移。老牛拉破车总是入不敷出,影响业务。迁移也是一个比较耗大的工程,尤其是大型数据库,上TB级的。比如使用导入导出,尽管操作命令一样,但大型数据库你得考虑的更多。诸如考虑使用并行,如何优化这个过程的性能,整一steps完全有必要。

三、监控数据库
除了合理的部署数据库之外,透过对数据库不同部分、组件的实时监控,我们可以及时采取补救措施以及防患于未然的策略来保障数据库持续、稳定、健康平稳运行。因此系统监控对于DBA而言,同样重要。下面先描述数据库级别的监控,后描述系统级别监控。这些部分通常包括以下内容:
数据库告警日志的实时监控,绝大部分Oracle错误信息都会记录于此。因此监控告警日志显得尤为重要。
数据库实例状态监控
数据库监听器的实时监控
表空间的使用率实时监控
闪回区或归档日志监控(如果有使用到闪回区,归档主要是针对归档空间空间问题,如不足,如用hang住)
数据库备份或恢复监控
无效对象的监控与处理
操作系统CPU/IO/Memory监控
对于监控工具的选择Oracle OEM提供了完美的图形化界面以及设定阀值来实现自动预警。当然也可以自己编写shell脚本来定时完成。对于SQL server同样可以基于GUI来完成。比较好的工具大家可以借助于Toad,Spotlight,Myora等优秀工具获得包括sga,pga,top SQL,instance等等更为详细的信息。除了实时监控之外,定期巡检也是有必要的。这就好比机器或汽车,得进行定期的保养。这样子可以发现隐性的或未决的问题,以及如何改善当前数据库。

四、保证数据库完整性
不求有功,但求无过。这个对于DBA来说是最起码的一点。很多时候我们无意中不小心的rm,drop等等有时候会带来灾难性的后果。永远不要有机会给上司开国际玩笑,那就是你不小心的整坏了生产数据库,而且还没有备份,这就丢大了。因此DBA的细心,数据库的定期备份是至关重要的。尤其是对于那些数据库是企业核心命脉的企业,每一步操作都尽可能思前想后。对于数据库的备份方式有多种多样,而且有诸多第三方备份方式。即便如此,每种数据库自带的备份方式是必须要掌握的。对于SQL server而言,自带的图形化备份设计基本上可以满足绝大多数需求。需要搞清数据库的恢复模式以及全备,增量等方式,当然掌握bcp命令也是很有必要的。对于Oracle,datapump,冷备,热备,rman备份几种最好都全部掌握,多多益善。数据库的备份策略主要依赖于对数据丢失的容忍度来决定。也就是说合理的备份策略基于数据库恢复所需要的所有相关的东东。因此备份策略应具体情形具体分析。定期的监控数据库的备份以及做灾备测试等来确保数据库的备份与恢复是完整无误的。

五、性能优化与调整
业务运行缓慢,客户抱怨不断。这是DBA们经常头疼的问题。尽管整体性能并不完全取决于数据库,但数据库仍然是至关重要的一环。而且性能的问题从整个业务需求分析,数据库架构设计的那一刻起直至数据库生命周期的终结。尤其是随着业务量的不断增加导致的性能问题日渐显现并表现的异常突出。正因此,对于一个优秀的DBA来讲,仅仅从数据库层面来把控性能是远远不够的;对存储,操作系统,网络,业务的了解与掌握才能对性能调整做到有的放矢,应用自如。深圳有句展现特区精神的口号,时间就是金钱,效率就是生命。同样适用于在线交易数据库系统。下面仅仅从数据库层面来谈谈性能调整与优化涉及到的方面。
操作系统内核参数优化与调整
基于不同的特性使用raid部署不同类型文件
分开存储数据和索引文件以及均衡I/O
调整数据库以及实例级别初始化参数
使用分区表处理海量数据以及滑动窗口归档
消除行链接与行迁移
使用索引、提示或物化视图调整SQL访问负载
调整优化器统计信息
通过调整PL/SQL以提供性能
使用并行技术提高性能

六、Troubleshooting
天有不测风云,人有旦夕祸福。数据库运行的过程中总难免出现这样或那样的问题。一是由于数据库软件及运行环境等产生的各种bug或隐性问题,二是人为的问题通常也不在少数。因此,如何快速定位并解决这些问题也是衡量一个DBA水平的重要指标。处理这些棘手的问题,需要DBA有大量的知识和经验的积累。尤其是对数据库理论以及数据库体系结构应该有较深刻的认识,把握其本体,何愁不能应用自如呢?在这里只说明Troubleshooting是DBA经常面对的问题,并未描述如何Troubleshooting。下面列出几类较为较为常见的需要Troubleshooting的问题。
告警日志中的异常处理
监听器相关的异常处理
数据库备份恢复期间的异常处理
Oracle job运行异常的处理
数据库突发的异常处理,如数据库hang,某个时间段性能低下 --Author:Leshami
集群管理中的异常处理 --Blog :http://blog.csdn.ne/leshami
DataGuard数据库日志传送,恢复等异常处理 --DBA交流群:324029615
用户报告的异常处理
数据库安全的异常处理

上面主要从6个方面简要的描述了DBA的工作及其职责范围,当然还有更多的细小的问题在此不再赘述。
总之DBA的工作也很繁琐,需要沉着冷静应对,三思而后行,尽可能地从整体出发,从全局出发来考虑问题。

DBA学习方法论

在大数据高速发展的今天,DBA的革新和提升每天都在发生,这决定了一个技术从业者必须不断的保持学习,才能符合岗位的需求。

实际上,DBA中大多数都是“活到老学到老”的典范。从Oracle到MySQL再到Hadooop、MongoDB,以及Exadata、OGG、性能优化等细分课程,全部都是我们需要关注和提升的知识。只有那些内心强大并且求知欲旺盛的技术爱好者,才能具备“路漫漫其修远,吾将上下而求索”的学习精神,转而克服种种困难,轻松面对滚滚而来的大数据技术潮流。

在DBA领域,理论知识和实际操作永远是一枚硬币的正反面,在日常的学习和工作中掌握好两方面的平衡,挑选适合自己的学习内容,才能更好的学以致用,以用带学!

正确的学习方法

如果现在打开你的电脑硬盘,是否保存着大量你精心收集的电脑教程?诸如电子书、培训材料、课程视频等等。绝大多数的DBA的电脑都会腾出一个分区来存放各种学习资料,其中内容往往经过精心分类,数量少则几G多则几十G上百G。如果再回头看一看你的书架,是否也已经被各种技术丛书堆满了?

这个时候你应该仔细统计一下,你电脑中的资料和书架上的书籍,有多少是从来没有看过的?有多少是看过超过1/3的?又有多少是真正看完并且对你的技术和工作产生了实质性帮助的?

有针对性的学习

真正有效的学习,是我们把一本书或者一套视频从头看到尾的过程,只有这些的学习才能促进我们的技术进步。能够对我们自己掌握新知识、大脑思考和学习新技术、动手操作并且积累经验等方方面面提供巨大帮助。所以现在需要你去动手统计一下,哪些书对你而言,形成了真正有效的学习,哪些视频对你而言,形成了真正有效的技能转化,哪些讲座对你而言,真正形成了有效的经验积累。

能否把最大的精力投入到对你成长最有帮助的书籍,教程和讲座上,决定了你的学习结果是否令人满意。涉猎广泛固然是好,但会导致你在很多技术关键点上不够深入,这样在工作中遇到太复杂的问题,就会显得似是而非,无从下手。博学不能成为你的能力,你的能力要体现在解决问题中。

注重细节

DBA工作最有意义的地方在于,有些时候表象相同的故障,不一定是同样的原因导致的。那么你面对这一起故障如何去分析原因?后续又如何设计一套方案来规避类似故障,技术细节至关重要。这就要求我们在平时的学习中就多多的苛求细节,而避免囫囵吞枣,泛泛而学。

曾经有一位工作5年的DBA去面试一份新的工作,本来对自己还极有信心,但是坐在面试官对面被一再的追问细节之后,马上发现自己从前对细节的关注太少了,少到对自己每天都做一些的操作都无法深入描述。所以往往这些被你忽略的细节,最后都可能成为你工作和成长的绊脚石。“人在江湖飘,谁能不挨刀”,如果认真对待每一个细节,相信你会少挨很多刀。

着眼于体系

说到体系,有人可能会问:这个难道不是跟刚刚说过的苛求细节相矛盾吗?其实不是的,所谓的体系是指某一个真正对你的工作有帮助的技术模块,在学习这个模块的过程中,要把相关的知识全部罗列出来,然后再反复学习和操作。比如说某一天,你要学性能调优,那么你需要了解的内容包括:操作系统安装搭建—Oracle配置—数据库对象配置—优化等一系列的知识,这个系列的所有知识总和成为一个体系。在学习体系的过程中,再去关注细节。这样才能达到最后的结果:性能最大化。

学什么

“吾生学语即耽书,万卷纵横眼欲枯”—陆游

陆放翁一生好学,读书万卷把眼睛都快看坏了,终于成就一代文豪。其成功的原因一是足够努力,二是把所有精力都放在了研究文学领域,不断的阅读、创作。陆游的经历告诉我们,只有把学习注意力放在跟工作、跟职业有关的技能上,有选择的学习,才会取得更大的成就。

哪怕同样都是从事DBA,不同的行业和不同的企业,对工作技能的要求都会不尽相同。即便如此,总会有一些共性的东西,那就是一定要时刻谨记“理论联系实践,实践大于理论”的学习方法和内容,正如古人所言:纸上得来终觉浅,绝知此事要躬行。无论是书本知识还是视频学习内容甚至是培训课上学的技能,都需要我们在实战环境中不厌其烦的操作操作再操作,才能真正变成自己的能力。

而处在职业生涯不同阶段的你,如何去甄别对自己有用的理论知识呢?以下是笔者给出的一些建议:

对于应届生-兴趣是最好的老师

如果你是一名应届毕业生,那么年轻是你最大的资本,你可以肆无忌惮的去尝试,各个数据库都可以去学一些,去做一些应用层面的操作,甚至数据库以外的内容也可以去尝试,这样你可以尽快确定自己的兴趣点,所谓兴趣是最好的老师,将自己的兴趣作为自己的职业,对未来的职业之路无异于如虎添翼,你的职业生涯将走的更轻松,同时会比很多人更容易成功。

毕业两年—选择很重要

如果你已经毕业2年,那么在过去的两年中,你已经通过各种尝试明确了自己的兴趣,职业生涯也有了一个明确的目标:你要成为优秀的Oracle DBA?还是要成为时髦的MySQL DBA?或者你想成为新潮的Hadoop管理员?抑或是你要低下头做一名开发?无论选择哪一项,你都不应该再摇摆不定,扎根于自己的兴趣点,做好自己的本质工作,不断的学习,实践,反思,再实践。渐渐地,你就可以独当一面了。

毕业五年—需要突破界限

如果你已经毕业4-5年,那么你已经可以独立承担压力和责任,在公司有了一定的地位,在行业也有了一些小小名气。你所从事的本职工作也有了自己的心得。这个时候的学习,你不应该再局限于自己的日常工作,而是应当去尝试涉猎一些自己不熟悉的领域了,当然这个领域最好是跟你目前的工作直接相关或者与你下一步的工作直接相关,,避免工作技能的陈旧化和工作思路的单一化。

毕业七年以上—多元化学习

如果你已经工作7以上以上,那么你在公司的技术团队已经有了强大的话语权,成为了公司可以倚重的核心力量。这个时候的学习,你需要站在更高的层面,进行技术,业务以及管理方面的多元化学习,这个时候的学习内容,不应该有任何的局限。多行业多元化的学习内容才能帮助你在日常工作中更加的游刃有余。

DBA入门之路:学习与进阶之经验谈

初入数据库之门的朋友们,总是关心如何能够快速提高,不断进步,事实上任何一个技术方向,都没有太多的捷径可走,勤奋与坚持必不可少,但是有一些方法和他人的经验可做借鉴,砥砺自我

在本周“云和恩墨大讲堂”的培训分享中,我回顾了自己的一些观点和看法,在此分享给大家。

img
我来稍微解释一下这些观点:

基础重于一切

在学习的过程中,Oracle核心技术的基本知识必须了解,在普遍的概念和功能点上不能留下死角,比如Oracle的LGWR原理,Redo/Undo机制,以及由此而来的各种功能,包括DG、ADG,闪回,高可用架构和容灾方案等。

了解Oracle数据库的核心功能与原理,在应对需求和提供服务时才能做到全面公正,这在起步阶段很重要。对于Oracle数据库,这需要阅读Oracle Concept、Administrator’s Guide、Reference手册、Backup and Recovery User’s Guide,进一步的需要了解Data Guard Concepts and Administration,Oracle Clusterware and RAC Administration手册。

百科全书杨廷琨的故事

Oracle ACED杨廷琨在ITPUB上被称为“Oracle的百科全书”、杨长老,他的文档阅读与理解深入罕有人及,老杨几乎阅读了Oracle数据库相关(还包括开发)的所有官方文档。

在北京,只要出门,老杨必然唤一辆出租车,在车上欣然的打开笔记本,阅读文档,甚至在云和恩墨年会的大巴车上,老杨打开的依然是官方文档,在飞机上,他更多拿的是打印稿。

老杨说,用一点投资,在车上换来安静的阅读,这回报和时间收益是无价的。

在云和恩墨,当你向老杨提一个问题,他可能回答:你可以在XX文档上XX章节找到答案。

在恩墨最大的挑战是:找老杨PK文档!

由点及面由浅入深的学习方案

我在《深入解析Oracle》一书中,总结和描述了我所实践的学习方法,有点及面和由浅入深。在这里整理更新分享给大家。

我一直主张的"由点到线再及面"的学习方法。特别是对于初学者,如果没有经过专门的培训和系统学习,那么自己通过实践的学习和思考就应当深入,在知识上,从某个角度来说,是"不患寡,而患不精深"。在我们遇到问题时,就应该不断深入研究,直至问题的核心本质,这样通过一个案例或实际问题的诊断学习和研究,我们就可以带动很多连带知识的学习,这样从一个点深入下去就形成一条线,再横向扩展就可以形成一个知识网,解决和研究的问题多了,就可以逐渐覆盖一个面,形成一个知识体系,这样慢慢的你就会觉得学习不再困难,而是一件得心应手的事情。

严谨与独立思考的素质

认真思考和深入研究本身就是对DBA的一项基本素质要求。在网上经常被问及我的招聘要求,收录一点在这里给大家参考:

对于一个候选人来说,我希望他勤奋、严谨、具有钻研精神及独立思考能力。技术其实往往并不是我最关心的内容,因为具备了前面的素质之后,经过1~2年的锻炼就绝对不会知道的太少。

我自己正是通过这样一条学习之路走过来的,也希望可以通过这本书将这个思想传达出来。

我愿意将我在《Oracle数据库性能优化》一书的序言中提到的一段话再次引用一下:

兴趣 + 勤奋 + 坚持 + 方法 ≈ 成功

很遗憾我不能给以上公式画上"=",但是无关紧要,只要具备了以上因素,我想我们每个人都会离成功不远了。

DBA生存的四大守则

在《深入浅出Oracle》一书中,我在序言中提到了我所总结的"DBA生存之四大守则",直到今天仍然具备借鉴意义。我列出的四大守则是:

1.备份重于一切

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

我们必需知道,系统总是要崩溃的,没有有效的备份只是等哪一天死!我经常开玩笑的说,唯一会使DBA在梦中惊醒的就是:没有有效的备份。

在进行重要的操作(如恢复尝试、升级操作等)之前,一定要做好备份,保留现场,以便必要时可以从头再来。

2.三思而后行

Think thrice before you act。

任何时候都要清楚你所做的一切,否则宁可不做!对于DBA来说,有时候一个回车,一条命令就会造成不可恢复的灾难,所以,你必需清楚确认你所做的一切,以及这些操作可能带来的后果,并且在必要时保护现场。

DBA切忌想当然。

3.rm是危险的

要知道在UNIX/Linux下,这个操作意味着你可能将永远失去后面的东西,所以,确认你的操作!!!

太多的人在 "rm -rf" 上悲痛欲绝,当年写下这条守则时,是一个凌晨被一个朋友吵醒,他说误操作rm -rf删除掉了200G的数据库,并且没有备份。

我当时能告诉他的只有一句话:要保持冷静.

4.你来制定规范

良好的规范是减少故障的基础。所以,作为一个DBA,你需要来制订规范,规范开发甚至系统人员,这样甚至可以规避有意或是无意的误操作,减少数据库的风险。

见过太多管理混乱的开发环境,经常出现程序员连错生产环境误操作的案例,所以规范实在是非常的重要。不以规矩,不成方圆。

这四个守则有的部分是相互关联,密不可分的,希望每个DBA都能谨慎认真,少犯错误。

DBA入门之路:关于日常工作的建议

img
我对其中几点再做一点展开阐释:

实时监控重要统计信息和等待事件

实时监控对于数据库运行至关重要、能够表征数据库重要变化的统计信息、等待事件,并且据此发送报警。这对于数据库的日常维护是非常重要的,关注重点,从细微变化中察知系统改变,这对于DBA来说是一项重要的素质要求

而对于Stat和Wait信息,数据库中核心的、常见的指标并不多,作为DBA,可以从你能够列出的常见的10个统计数据、等待事件入手,针对性的进行深入、全面的学习,经过一段时间之后,必然有很多收获;

全面深入的了解应用架构

不了解应用的DBA是没有前途的DBA,对应用了解不深入的DBA算不上Expert,所以一定要深入了解应用。

这句话写自6年多以前,但是今天更加适用了,我们认为DBA应该向前走,才能发挥更大的价值,尤其是在互联网的时代,DevOps就是应用和运维结合的趋势和理念指引。

部署自动的AWR/ASH报告生成机制

对于管理众多数据库的DBA,每天应当检查前日的AWR,重点ASH、SQL报告,熟悉数据库的运行状况,做到对于数据库的了如指掌;

应当编写自动化脚本或部署工具,根据系统负载,找到那些在峰值消耗较高的报告点,重点关注其中可能存在的问题;

每天至少优化和熟悉一个Top SQL

根据AWR和SQL报告,每天至少了解或熟悉一个Top SQL,能优化的要提出优化和调整建议;这对于管理少量系统的DBA会特别有帮助,通过关注SQL,进一步了解业务逻辑,通过优化SQL,进一步改善性能,这些都会非常有助于DBA能力的提升;

对于哪些刚刚开始DBA生涯的朋友们,可以借鉴这一条的建议;

撰写系统架构、现状、调整备忘录

其实最后一条也是我非常重视的,实际上是锻炼和培养一个DBA的文档能力;根据对数据库的研究和了解,不断记录数据库的状况,撰写数据库架构、现状及调整备忘录,不放过任何可能的优化与改进的机会,也为调整和变化留下可查的依据。

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

18 − 2 =

 

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部