总结–我的提高DBA工作效率实践
入职接近半年了,大四即将结束的时候重看了一些好书,其中一本是高效能人士的七个习惯 ,还有最近读的系统管理员的时间管理 ,这两本书都讲了很多提高工作效率的技巧
这里,总结一下自己提高日常DBA工作效率的小工具
1.数据库表,字段定义在线查询
在入职第三个月,接到一个任务是为我负责的数据库的表和相关的字段进行注释文档的编写。这个事情在学校做项目也搞过,提供一 个数据库定义记录的文档是必须的,可让开发人员和DBA都知道表的具体作用,但如果是写到一个word文档,更新的时候麻烦,你每 改一次数据库就要打开那个文档更新,而其他人还需要重新下载最新版本。
解决方案: 在公司自己开发的分布式数据库系统库里面增加两个表来,一个是记录表注释,一个是记录字段注释。使用jsp连接到这 个数据库,给出表列表和根据表名字查询表定义,字段定义,索引信息,访问语句信息等对开发人员有参考价值的信息
效果: 由于在DBA修改数据库的时候就把定义信息插入到上面两个表,所查询到的定义都是和产品库一致的信息,开发人员可以很方 便的查询到想要的信息,而DBA也不再需要用word文档来记录表的定义了。
2.把DBA的部分工作交给脚本自动化完成
公司的SA组的同事们为我们DB组搭了个cacti 来监控DB服务器,每天早上回到公司的第二件事就是扫一眼这个cacti来看看服务器的 负载。没错,是第二件事,第一件事是看报警邮件…
cacti只能监控常见的参数,但公司的MySQL打了自己的补丁,cacti是检测不到的,所以老大们写了个性能统计的脚本,每周的某个 时间跑一遍,用shell,sed,awk把需要的数据信息导成一个文件,然后各个产品的DBA把对应的文件贴到我们的wiki上面…. 问题是随着时间的增长,那个wiki页面打开越来越慢..同时也看很难看得出服务器和MySQL的性能趋势
解决方案实现: 服务端用crontab 定期执行shell脚本,把对应的数据插入到数据库,数据库层建立几张表来保存,web端使用 openflash chart 2开源组件和jsp来根据各种需求来展现性能数据,并根据DBA的周报格式自动生成周报
效果: DBA,开发人员,产品经理可以很直观的看到服务器的某些参数的性能趋势,而DBA写周报的时候,可以快速的拿到性能数据, 也不需要去手动维护wiki页面了,因为已经自动化了
3. 规范数据库备份操作
公司的数据库除了使用mysql 的replication机制来作为镜像库之外,还定期备份数据文件作为历史镜像,到一定时候会删掉很久之 前的数据,但产品库的数据文件一般都是G级别的,时不时发生磁盘空间不足备份失败,备份服务器空间不足,还有引发其他脚本的 执行错误等一系列的问题。
解决方案实现:
1.使用shell的sed和awk,还有linux的crontab定期执行脚本监控备份日志信息,如发现有错误,自动通知DBA处理
2.升级历史备份脚本,如果当前磁盘空间少于上一次的备份文件大小,就不做备份了,通知DBA处理
3.写一个空间预测脚本,根据上一次的备份文件大小,判断磁盘是否有充足空间做下一次的备份,这样可以确保数据备份的完整性~
效果: 进一步保证数据备份的完整性和规范性
以上是半年来所做的提高DBA效率的实践,不算很复杂,但做好之后,意义挺大。
希望2010年可以在提高效率这方面走的更远。
还只是一些初级的监控
千里之行,始于足下!