走进DBA-下篇
2022-02-16 00:23:27 4 举报
AI智能生成
走进DBA-下篇
作者其他创作
大纲/内容
目前DBA的就业范围非常广,一般的大中型或跨国企业、甚至小公司都建立自己的数据库,他们都需要数据库管理员对数据库进行维护管理。一些国际知名企业、国企都是数据库管理员很好的去处。
我们来看看,某招聘网站上一个一线城市在DBA方面的招聘信息,如下图,以北京为例,我们可以看到非常多的互联网顶尖巨头公司,在DBA存在缺口。从搜索的岗位个数来看,总共有28页之多,这说明我们一线城市在DBA岗位的需求还是非常多的。
招聘DBA的公司有多少
我们也可以从下图了解到,不管是哪行哪业均遵循金字塔法则,你如果对该行业该岗位,研究了解的越深入,你将站立在金字塔的塔尖,你的努力付出与回报是成正比的。
以下数据来源于第三方平台的统计,以北京为例,DBA的平均薪资达到15000元,其中15K以上的占比23%,而且DBA的薪资,每年均有一定幅度的调整,当然这个调整是正向的。
DBA的工资水平
1. 最好是计算机相关专业大学毕业,对数据库相关知识有比较深入全面的了解(其实身边也不少朋友不是计算机专业出身的DBA,他们凭借自身的努力也找到了自己心仪的DBA工作,关键还在自己)
2. 如果有时间,就去考个数据库等级认证吧,这将是你很好的敲门砖。认证可以直接告诉公司你对数据库是有热情的,也可以间接告诉别人,你对数据库有比较深入的了解,能够对生产数据库进行维护和优化
3. 具有数据库管理维护的经验,最好有一定的数据库开发经验,对于数据库的开发、运维等各个阶段比较熟悉
4. 工作踏实认真,有极强的责任心,能承受压力,有团队合作精神
DBA任职条件
数据库作为整个系统不可缺少的一部分,它的表现直接受硬件、操作系统、网络、架构及应用程序的代码质量、数据库表结构设计的质量,以及其他诸多因素的影响,这些因素加起来是非常复杂的。因此一个专业DBA除了要以理论知识为基础,经验、历练、见识的多寡也是至关重要的。
不管是小公司,还是一个分工高度明确的大公司,不管是自己开发,还是购买第三方的应用软件,只要涉及到数据库的就需要确定是否雇佣一个或多个DBA(如果不雇佣专业DBA就会带来很大的管理风险)。
初中级DBA往往从业一年左右,熟练的维护某种操作系统(如linux是主流)环境下的数据库,渐渐从小白,到对DBA有了新的认知,对数据库性能优化、备份恢复均有了非常好的实践经验。再对公司业务有更多的深入了解、熟悉很多种操作平台下各种大型数据库维护,了解各个不同数据库在不同环境下的优势和劣势,能在数据库专业问题上做出决策,通晓系统架构和数据库配置,能对数据库进行各种的优化,那么恭喜你已经成为了高级DBA。高级DBA往往在互联网巨头、银行、保险等企业大显身手,尤其是稳定性、安全性、性能要求都非常高的关键业务领域-在线交易,DBA是不可或缺的核心岗位(一般在一个公司的高级DBA一般都是香饽饽,备受公司同事的喜爱和领导的赏识,如果你是单身那恭喜你,你已经被公司漂亮小姐姐盯上了,哈哈!谁叫你这么出众)。
随着工作年限的增长,DBA的经验不断增加,其价值会越来越高,可以逐步成长为资深DBA、系统架构师、运维经理、CIO等,相比开发人员来讲,DBA出现中年危机的概率要小很多。
DBA职业前景
职业发展:DBA的“钱”景如何
从大的方面看,DBA可以分为传统DBA和互联网DBA。我们一起来看看他们有什么样的区别。
首先,传统DBA也就是传统意义上的DBA,这个岗位意味着自动化程度较低,主要靠人工在运维,重复劳动相对会比较多。这个岗位,基本上只要管好DB本身即可,一般无需关注操作系统、硬件、网络、安全等技术细节,最多关注到主机和存储设备即可,
传统企业的Oracle DBA基本就是这样的工作内容,所以传统DBA的典型代表,其实就是Oracle DBA。
那么,互联网的DBA是怎样的呢?互联网DBA意味着自动化程度较高,一些重复性的劳动主要靠平台或工具在运维。互联网DBA需要关注的方面也相应更多,操作系统、硬件、网络、NoSQL、自动化运维开发,都需要懂一些。特别是自动化运维平台的开发,能避免很多重复性的劳动,通常,这种平台都需要亲自参与开发,用起来才比较顺手。
互联网DBA的典型代表是MySQL DBA,而MySQL一般在互联网业务中使用,所以这一类的DBA通常都在互联网企业。
传统DBA VS 互联网DBA
神秘的DBA每天都在忙些啥呢?我们先来看传统DBA的一天,这里以Oracle DBA为例子。
一般来讲,上午DBA会做一些巡检的事情,比如备份是否ok,日志是否有报错、有没严重的等待事件、连接数高不高、并发数高不高、空间是否足够。
做完巡检,一个上午也差不多过去了,下午呢,DBA会关注数据库性能方面的事情,比如看看AWR报告,看看SQL报告,判断一下DB性能有没低于基线、看看有没跑的很慢的SQL、SQL能不能做下优化。
好不容易熬到下班了,晚上可能还会接到一些比较特别的需求,比如数据库迁移、SQL发布、数据归档等,这些需求基本上只能在晚上干活,因为这些操作会影响数据库的正常使用。
讲到这里,大家可能对DBA这份工作有点望而却步吧,工作都排的满满当当的,没有一点自己的生活。那事实上也算是如此吧,传统DBA自动化程度偏低,承担了太多这种重复性的劳动。
那有没办法可以改变传统DBA的这种状态呢?我们来看看互联网DBA是怎么做的?
互联网DBA和传统DBA的最大区别,就在于大部分重复劳动会通过自动化运维平台来完成,那DBA就可以腾出手来做更多有价值的事情。所以,一个理想的MySQL DBA的日常工作会是这样分配的。
自动化和主动优化会占据60%的工作,我们要避免重复劳动,就必须有一套强大的自动化运维平台来代替DBA完成手工的事情,同时我们也需要有一套强大的数据库架构,这种架构是需要不停深入去打磨的。
其次是DB监控,大概会占据20%的工作,监控会代替DBA去发现数据库的异常,这个时候就需要DBA出马来快速解决异常。
最后20%是基础工作,比如备份恢复、实例部署、权限管理、SQL审核等等,这一类的工作大部分是重复性的,也可以通过运维平台来完成。
DBA每天在忙啥?
除此之外,不管是传统DBA还是互联网DBA,我们还经常要充当一线救火队员,比如碰到数据库挂了、开发误删数据这些紧急事件,这个时候就要求DBA随时随地都能紧急上线,快速解决问题,恢复正常业务,所以DBA还需要有一颗强大的心脏。
DBA是救火队员
日常工作:DBA都在忙些什么
首先,我们来了解一下目前主流的数据库都有哪些吧。
下面这张图是 2021 年 4 月份发布的 DB-Engine(一个专门跟踪数据库流行程度排名的权威网站)数据库产品流行度排名,我们可以从中来查看目前数据库的排名(以下抓取排名前12的数据库),主流的关系型数据库代表有:Oracle、MySQL、SQL Server、PostgreSQL,非关系型数据库代表有:MongoDB、Redis、Elasticsearch。
目前市面主流的数据库
目前国内在去IOE(I:IBM的小型机or大型机,O:Oracle,E:EMC存储产品)的浪潮下,行业有很多数据库方案,如MySQL、PostgreSQL、MariaDB,和国内的代表数据库TiDB、GaussDB、达梦等诸多数据库产品,其中MySQL是中流砥柱,拥有无数成功案例。在这里,也建议大家使用这个主流,而且又比较容易入门的MySQL开源数据库。
接下来,我们主要以MySQL数据库为例进行讲解。
选择哪种数据库作为入门
1. 操作系统:数据库大多部署在linux环境中,首先对于DBA需要熟练掌握linux操作系统安装部署、linux环境的基本命令、各类资源配置文件、各类操作系统服务的关系、shell脚本等等
2. 数据库方面:安装部署、SQL语句、容量规划、架构设计、故障处理、性能优化
3. 监控:目前大多企业数据库环境一般有几十套、大的企业都是几千套的各类型数据库环境,这么多的数据库不可能在通过人力去进行监控,而是通过诸如zabbix、prometheus来监控操作系统、数据库的运行情况,及时能够通过告警系统将如cpu、IO、磁盘使用率、数据库锁、长事务等监控信息及时告知DBA进行处理,防止生产事故发生
4. 自动化运维:一般企业的各种类型数据库达几百上千套环境,当遇到一些重复性的运维工作且DBA人手不够(一般公司不会配置过多的DBA人员)时,这就需要DBA维护人员具有相应的自动化运维的能力,将平时一些重复性的工作通过脚本化来减轻运维工作量。再进一步的话,我们可以通过自动化平台来实现,如:DB自动化运维平台、AI DevOps,通过平台化可以降低DBA的工作量,也可以更好的来提升和稳定我们所维护的数据库环境。目前主要的自动化开发语言有:Python、GO
5. 其他辅助基础知识:了解PC服务器、硬件存储机柜、交换机、网络、机房建设,这些对我们在架构设计、故障排除方面也是非常有帮助的
DBA需要掌握基本技能
以下是由浅入深,MySQL DBA 应该掌握的技能
1. MySQL体系结构
2. MySQL存储引擎
3. 索引
4. 事务
5. 锁
6. 性能优化
7. 备份恢复
8. 高可用
9. MySQL源代码深入(需要的知识体系如:操作系统线程、glibc、C++等有很深入了解),对于计算机科班出身很有优势
优先纵向深度学习
如果你已经在MySQL DBA这个方向深入到一定层次了,那就可以在横向上,来扩展自己的知识水平:* 一般企业不单单只有MySQL数据库,各种业务场景需要不同类型的数据库来支撑* 为了自身有更好职业发展,不能局限使用单类型数据库* 在熟悉各种数据库后,我们就会有更多问题解决思路
我们可以根据当前的市场行情来选择我们的知识扩展,比如数据库我们可以学习Mongodb、Redis、Elasticsearch;也可以往自动化运维深入:Python、GO;平台开发:tornado、django;大数据方向:Hbase、Hive都是不错的发展方向。
横向扩展扩大本身技术层次
基础能力:浅谈 DBA 的技能图谱
走进DBA-下篇
0 条评论
回复 删除
下一页