数据库工程师

主要职责

数据库工程师在不同的公司不同的发展阶段有着不同的职责与定位。一般意义上的数据库工程师只是负责数据库的运营和维护,包括数据库的安装、监控、备份、恢复等基本工作,但是广义上的数据库工程师职责比这个大得多,需要覆盖产品从需求设计、测试到交付上线的整个生命周期,在此过程中不仅要负责数据库管理系统的搭建和运维,更要参与到前期的数据库设计,中期的数据库测试和后期的数据库容量管理和性能优化。

对于初创公司,数据库工程师的工作可能由运维工程师来兼任,从申请域名开始,到服务器上架,配置网络设备,部署操作系统,安装数据库,设计和部署监控,防止漏洞和攻击等等。而大型公司对数据库工程师工作的要求越来越高,以下从各个维度来看数据库工程师工作的职责。

产品生命周期维度

数据库工程师负责了业务数据库从设计、测试到部署交付的全生命周期管理,各个阶段的职责包括:

1. 产品发布前

这个阶段数据库工程师的职责是数据库准入,主要包括:

1)产品的业务熟悉;

2)产品数据库设计评审:包括架构的合理性评估,存储容量和性能是否满足需求,是否需要缓存,是否需要冗余备份等,同时需要提供数据库schema设计的合理性建议以使产品能够满足上线发布并稳定运行的基本要求;

3)资源评估,包括所需的服务器资源、网络资源以及资源的分布等,同时把关产品对资源预算申请的合理性,控制服务成本;

4)资源就位,将申请的服务器及基础环境/域名准备就位。

2. 产品发布

这个阶段数据库工程师负责数据库发布的具体工作,将具体的数据库安装部署和初始化完成后并对外提供服务。对于已在线数据库的升级也属于发布范畴,这个时候的产品发布一般要保障在线发布,在不中断对外服务的情况下完成数据库的升级。对于大型复杂的变更也存在中止服务发布完成后再重新提供服务的情况,但这种情况需要数据库工程师通过尽可能的技术手段来避免。

3. 产品运行维护

这个阶段的工作重点包括:

1)监控:对数据库服务运行的状态进行实时的监控,包括数据库会话、数据库日志、数据文件碎片、表空间监控、用户访问监控等,随时发现数据库服务的运行异常和资源消耗情况;输出重要的日常数据库服务运行报表以评估数据库服务整体运行状况,发现数据库隐患;

2)备份:制定和实施数据库备份计划,灾难出现时对数据库信息进行恢复,维护适当介质上的存档或者备份数据。对数据库的备份策略要根据实际要求进行更改,数据的日常备份情况进行监控。

3)安全审计:为不同的数据库管理系统用户规定不同的访问权限,以保护数据库不被未经授权的访问和破坏。例如,允许一类用户只能检索数据,而另一类用户可能拥有更新数据和删除记录的权限。

4)故障处理:对数据库服务出现的任何异常进行及时处理,尽可能避免问题的扩大化甚至中止服务。这之前数据库工程师需要针对各类服务异常,如机房/网络故障、程序bug等问题制定处理的预案,问题出现时可以自动或手动执行预案达到止损的目的。

5)容量管理:包括数据库规模扩张后的资源评估、扩容、机房迁移、流量调度等规划和具体实施。

4. 数据库性能优化

产品对外提供服务最重要的一点是用户体验,用户体验中非常重要的是产品的可用性和响应速度。而如何用最合理的资源支持产品提供高可用和高速度的用户体验,这也是数据库工程师的重要职责。