我一直有一个观点:程序是暂时的,而数据是永恒的。所以我一直都认为数据的重要性在很多企业中都远远高于应用程序,在多年的工作实践中努力做好DBA的工作。而要做好一名DBA,必须要清楚作为一名DBA的职责。DBA最重要的工作是保证数据的安全与完整,另外重要的职责是协调开发部门部署相对最优性能的数据环境。
DBA的职责归纳起来主要有以下方面:
1.数据服务器安装与升级
数据库系统相应版本的安装需要与开发人员沟通确定,在开发人员熟悉的数据库系统版本与有更好性能的版本选择中,结合实际应用,从DBA的角色思考给出选择建议,确定数据库系统版本后实施安装与升级。
2.应用系统数据层面评估、数据库存诸结构设计、创建数据对象
了解清楚应用系统的功用目的,评估相关数据存诸量可能达到的数量级,根据架构师的架构分析给出相应的数据库存诸设计,并提出尽可能减少数据库负担的架构建议,比如负载均衡、增加Cache层等,确定相关架构后创建相关的数据对象,配合开发部门搭建开发环境。
3.根据开发人员反馈信息,作相关配合工作,必要时调整数据库结构
在开发部门进行系统开发的过程中,随时跟进数据库读写方面的情况,检测开发人员的数据库相关操作语句的优劣性,给出改进意见。根据开发人员的反馈信息,作出相应的配合反馈。在系统开发完成之后,进行相关的负载、安全测试,检测性能并按实际给出调整程序建方式或调整数据库结构。
4.数据库用户及数据库安全维护
分配用户及权限给应用系统使用,在系统进入生产应用之后,做好日常的安全维护工作。
5.监控与优化数据库性能,协调开发人员优化应用系统
对生产环境中的应用系统的数据操作情况进行监控,分析并找出性能低下或有安全隐患的数据库操作语句,反馈给开发人员,给出改进意见。结合服务器运行情况,与系统管理员对CPU、内存、硬盘等硬件运行情况进行评估,按实际情况整改,使数据服务器与应用系统结合运行情况达到最优。
6.制定与执行数据库备份/恢复/迁移计划
随着应用系统的运行,数据会不断地增加,除了随时注意硬盘空间配额是否足以应对一定时期的数据增量外,还要制定相应的数据备份/恢复/迁移计划,特别是备份工作是每日都必不可少的,保证相对完整的数据副本是DBA日常最基本的工作内容之一。针对应用系统制定可用性较高的恢复/迁移计划,保证在需要的情况下,不对应用系统作修改或仅作稍微的修改便能做好应用系统层的恢复或迁移工作。
7.随时准备应对灾难性措施
要能应对灾难性的问题,在做上面的第6点基本上,收集各方面的信息以及与服务器系统管理员的日常协调十分必要。很多时候灾难性的冲击不光是来自数据层面的,还有系统以及硬件方面等。所以作为一名DBA需要与服务器系统管理员以及应用系统架构师时常保持良好的沟通协作,除了要有足够的经验做好预防措施,还要随时准备应对降临的灾难性冲击后的迅速恢复。
8.制定及做好每日/每周/每月的工作计划
周工作以及月工作除掉计划安排之外,细分下来便是每日的工作,一般来说每日的工作主要有:
1)确保数据服务器运转正常,数据库状态正常
2)查看数据库日志,查看跟踪文件,看是否有异常
3)检查服务器盘状态,空间是否够用
4)检查备份是否正常
5)监测性能,如有性能下降,排查原因
6)填写DBA日志
除了日常的工作,系统运行达到一定的时期后,需要与相关部门商议是否对新老数据进行分割,根据数据库性能的历史数据,提供相应的分析报告,以及性能优化计划。
9.了解与学习更新相关的技术信息,以应对各种可能出现的问题
技术的发展是日新月异的,一名好的DBA应该随时了解相关有用的技术信息,对已投入使用的数据库软件,关注官方的技术动态以及Bug公告等。根据公司的实际情况,筛选有用的新技术,应用于对系统的性能提升或增添安全性等。
只要做好了以上几点,富于责任心并具备良好的执行力,相信这样的人离一个好的DBA已不远了。