很多时候,都和身边朋友聊两个问题,DBA的日常工作都是哪些?什么才是数据库方面最重要的?
我相信这两个问题的答案每个人都不会完全一样,我也是,所以这里只代表我的个人观点,并且以下的内容将围绕我的思路展开,希望对大家有或多或少的帮助。
Q1:DBA的日常工作都是哪些?
A:
- 数据库的安装部署
- 数据库监控
- 数据库优化
- 数据库故障处理
- 其他
Q2:什么才是数据库方面最重要的?
A: 稳定性
很多公司,DBA和管理的DB数量比,1:10算少的,1:50都不算多,1:100也见过,数据库的优化、高可用、监控等等都是为了确保数据库的稳定性,稳定性如果不能保证,其他的工作都无法顺利开展,那么在保证稳定性的工作中,监控又显的格外突出。我个人的看法,DBA日常80%的工作都是在监控DB,自动化必不可少,为了节约出你的79%的监控时间,你才有去安装、优化、故障处理、配合开发人员工作的时间,那么80%中,还有1%去哪里了?答案就是人工监控将占据这1%。任何监控程序都永远不能100%代替人工,就像你妈把你放在幼儿园,还会去了解你在幼儿园的情况一样,所以你时不时需要人工看看你的DB的实际情况。
我将DB监控分为两类:一、功能监控;二、性能监控。
我主张的是先保证功能,才有资格保证性能,连功能都不能保证的监控,不是好的性能监控。
市面上,有非常多的开源软件,例如cacti、zabbix、nagios..,对于数据库或者服务器的功能监控,基本还是调用的DMV、WMI来监控的,性能监控也基本都是围绕性能计数器运行值监控,我的监控程序也一样,不过有一点不同之处,就是基础数据的收集及使用。
第三方监控程序我总结是基础数据收集+计算基础数据+计算后数据图表展示。开源程序的普遍使用造就了一些人过于依赖的现象,大多数公司在招聘DBA的时候都不会问你如何使用第三方工具,而作为企业招聘者,更愿意招聘那些懂得如何收集基础数据,如何计算基础数据,如何展示计算后数据的人。
换言之,如何计算、如何展示,只要你有基础数据,那么一切将不在话下。
简单归纳下我的监控列表,在后面的文章里,我会分享下每一个是如何实现的。
一、功能监控
- 连接数监控
- 数据库状态监控
- 对象使用空间监控
- 数据库镜像状态
- 数据库作业监控
- 数据库错误日志监控
- 数据库使用空间监控
- 数据库阻塞监控
- 数据库索引使用监控
- 数据库统计信息监控
- 数据库虚拟日志文件监控
二、性能监控
- 多台数据库性能计数器如何统一收集。
- 如何利用SQL Server生成你需要的数据。
三、如何利用SQL CLR+WMI进行Windows监控
四、报警:如何用SQL Server,达到短信报警和邮件报警的实现
通宵加班中,本次只能说到这里,以上只代表本人的想法,如果有不同意见,非常欢迎发来探讨。