一个DBA的修养

前两天,在Mongo的群里面,有同学讨论,一个DBA需要什么样的技能,当时在群里面简单的说了几句,但是这个问题确实触动了我,所以对DBA工作做了一点简答总结,希望和大家探讨一下。

作为一个老DBA,我觉得。DBA最重要的工作,是配合产品,对一个或者多个数据库,做全生命周期的管理。
在这个过程中,我们可能需要很多技能,往下有OS层的,存储层的,网络层的,往上还有中间件层,driver层,应用层。对于这些不展开说。单说DBA层,也可以分为两个部分,一部分是physical的一部分是logical的。

对于physical部分工作,主要包含以下几个方面的内容:
1,数据库和集群的架构和规划,包括以下内容:
集群的高可用,容灾,备份还原规划。这部分内容在规划之初,就应该重点考虑到,否则上了生产再改造,既费时费力,又容易难以沟通。极端情况下也能决定一个公司的命运。
2,数据库和集群的容量规划:
这部分内容,即包括初始的容量规划,也要考虑后继使用中的资源/容量伸缩规划和方案。
通常需要规划到数据库的bufferpool,规划数据的物理分布(存储),分片的分布。
3,数据库和集群资源规划的标准化部署:
在部署的层面,因为OS的不同,各公司存储,网络环境的不同,需要结合本公司的情况,以及之前的架构规划,做出相应的优化部署。经常我们会在部署的过程中,发现实际上底层提供的资源,未必满足我们的架构规划,这个时候可能需要作出相应的调整。常常我们需要将复制集中的节点部署在不同的物理节点,以满足高可用需要,但是往往得到的机器,存储,等等资源,可能逻辑上是分开的,物理上却是在一起的,这个时候就需要我们能够识别出来,加以改造。
4,安全管理:
中文好像比较难区分Authentication和Authorization,简单说Authentication就是决定谁可以登录到数据库,Authorization是决定进入数据库的这个 user可以做什么样的操作。
各种数据库,都可以提供不同的认证方式,DBA需要根据公司情况,在Authentication这部分中规划好自己的认证方式。 面对不同的用户和应用需要在Authentication这部分,规划好user的权限和角色。
很多公司都有自己的各种安全策略, 最常见的就是定期改密码一类的,配合各种系统改user/password,也是一项免不了的苦力。
安全这部分,当然是需要把数据加密也可以包含进来的,小伙伴们根据公司的策略来吧。
4,日常的运维:
这部分内容说起来比较宽泛,数据库只要建好了,其他所有工作都可以看做日常的运维,前面我们说的很多东东,都可以包含到运维中。另外还有监控,设置监控报警阈值,健康检查;备份及验证备份的可用性 ……
5,故障处理:
人会生病,机器会出故障,各种不合理的参数,堆叠在一起,资源的滥用等等,往往会在某些时候引起故障,所以,恭喜各位,半夜被call起来处理故障,也是难免的。
6,数据库的变更:
因为有了故障,所以需要调整,这样就有了数据库的变更。同时包括版本和补丁的变化,表的调整,OS层的调整,硬件资源的调整,都需要变更处理。往往变更的规划和沟通,比变更本身更加重要。
7, 主被切换和容灾演练:
很多大的公司,都要求定期做主被(primary/stanby)切换和容灾演练(disaster recovery);相对于主被切换来说,容灾演练是一个系统的工作,需要和不同的团队,在短期内搭建一个全新的容灾环境,并且将数据恢复到特定的时间点。这部分工作,对DBA来说,也是一个不小的考验。

对于logical部分工作,主要包含以下几个方面的内容:
1,规划数据库集群的接入方式,最大连接数,连接池大小等等
2,配合开发的同学设计table,schema
3,规划片键,组织数据的逻辑分布(分布式数据库特有的)。
4,规划索引,需要和开发的同事一起规划索引,合理利用以提高查询排序等等的效率,同时尽可能少的影响写入效率。
5,对于查询调优,识别慢查询,读懂执行计划,针对慢查询进行优化。
logical的部分,在关系型数据库中,是一个十分费脑的工作,有时候摸清楚一个开发人员的查询到底是要实现什么是十分痛苦的。不过在Mongodb这种nosql数据库库中一切都变得简单起来。

以上的内容,往往也不是一个单独的DBA能完成的,大多数时候是需要一个团队来运作的。既然是团队工作,也免不了需要各种规范,通常DBA团队还要制定开发规范,部署规范,运维规范,账户管理规范等等。平时也可以借助一些工具来辅助管理工作(OPS manager),另外也可以借助社区的力量来完成一部分工作。

做DBA不容易,不但要掌握系统的知识,还要有一个强大的内心,平时必须要有备无患,即要做好数据的备份,还要准备好各种应急方案。做DBA的底线,就是要保证数据的安全,一个合格的DBA,必须要能够守住底线。

心中千万个想法,三言两语很难说清。以上内容,难免有偏颇和不足,欢迎大家指正,感谢大家的阅读。

最后还要请大家多多关爱DBA工作者

发表评论