我心中的MySQL DBA
原文网址链接:http://wangwei007.blog.51cto.com/68019/1718311
MySQL是一个跨平台的开源关系型数据库管理系统,目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。随着MySQL在互联网上被广泛使用,在数据库领域的地位爆炸式的提升,BAT等各互联网的去IOE,大量的使用MySQL作为核心数据库,MySQL DBA的市场需求量日益剧增,好的MySQL DBA更是各个互联网公司抢手的人才。越来越多的IT人才开始转型做DBA,那么作为一个DBA,首先要明白作为一个DBA的核心目标也是终极目标:保证数据库管理系统的稳定性、安全性、完整性和高性能。
MySQL DBA大概可以分为两种:一种是开发DBA,一种是运维DBA,这里说的MySQL DBA是指运维DBA。一般意义上的DBA指的是运维DBA,只是负责数据库的运营和维护,包括数据库的安装、监控、备份、恢复等基本工作,而高级或资深 DBA职责比这个大得多,需要覆盖产品从需求设计、测试到交付上线的整个生命周期,在此过程中不仅要负责数据库管理系统的搭建和运维,更要参与到前期的数据库设计,中期的数据库测试和后期的数据库容量管理和性能优化。
对于运维DBA来说,主要的职责为以下几点:
1) 监控:对数据库服务运行的状态进行实时的监控,包括数据库会话、数据库日志、数据文件碎片、表空间监控、用户访问监控等,随时发现数据库服务的运行异常和资源消耗情况;输出重要的日常数据库服务运行报表以评估数据库服务整体运行状况,发现数据库隐患;监控对于DBA来说是至关重要的,是DBA的第三只眼 睛,利于监控可以自动处理一些常规的故障,提前发现并解决潜在隐患,监控对于运维是必备的技能,如果你不懂监控,那么你就不是一个称职的运维人员;
2)备份:制定和实施数据库备份计划,灾难出现时对数据库信息进行恢复,维护适当介质上的存档或者备份数据。对数据库的备份策略要根据实际要求进行更改,数据的日常备份情况进行监控。备份大概分为两种:一种是定时、计划性的备份,包含全备和增量备份,常用的工具一般为mysqldump以及xtrabackup为代表的第三方备份工具;一种是执行DML时更新和删除的备份,这种备份一般有以下几种备份方式:一种为create tablexxx_mmddhhmm select的方式备份到表中,一种是mysqldump加上条件做备份,还有一种是select into oufile等几种方式,防止执行错误时可以快速的恢复。在日常对数据库的操作中,特别作为一个DBA,永远要给自己留一个后手,保证在需要进行数据恢复的时候可以随手拈来。
3)安全审计:为不同的数据库管理系统用户规定不同的访问权限,以保护数据库不被未经授权的访问和破坏。例如,允许一类用户只能检索数据,而另一类用户可能拥有更新数据和删除记录的权限。
4)故障处理:对数据库服务出现的任何异常进行及时处理,尽可能避免问题的扩大化甚至中止服务。这之前DBA需要针对各类服务异常,如机房/网络故障、程序bug等问题制定处理的预案,问题出现时可以自动或手动执行预案达到止损的目的。在故障处理中,DBA的反应至关重要,可能在分分钟钟的时间内,小的故障引发大的故障,对业务的影响更大,这个非常考验DBA的应急能力和应变能力。对于常见的故障,比如连接数突然增多、数据库服务器空间的清理、主从同步延迟、CPU使用过高等,可以和研发一起制定相应的预案,并且和监控结合,当达到一定的阀值,使用相应的脚本自动处理,这样在一定程度上减少DBA的工作量、提高故障处理效率,更重要的是可以为DBA争取一定的时间,防止故障升级对业务带来更大的影响。
5)容量管理:包括数据库规模扩张后的资源评估、扩容、机房迁移、流量调度等规划和具体实施。
6)数据库性能优化:产品对外提供服务最重要的一点是用户体验,用户体验中非常重要的是产品的可用性和响应速度。而如何用最合理的资源支持产品提供高可用和高速度的用户体验,这也是DBA的重要职责。在多年的DBA生涯中,个人对数据库故障的总结为:80%的甚至更高的故障来自变态的SQL语句,10%左右的来自数据库架构方面设计的不合理,10%左右的来自硬件、OS层面。那么基本的优化重点就就是对SQL的优化,这个需要给研发人员进行MySQL开发规范进行培训,制定严格的SQL准入规则,审核每一条上线的SQL语句,在SQL源头上堵住大部分,然后就是对慢SQL的监控分析,定期的发给研发进行整改,并督促研发在限定的时间内整改。这部分的工作较为繁琐平淡,但是执行好了,可以杜绝很多不必要的故障,保证业务的高效、稳定运行,这一部分工作非常考验DBA的基础理论知识,考验DBA的责任性和工作的毅力。
个人认为,一个好的DBA所需要具备的基本技能包含:理解数据备份/恢复与灾难恢复、DBA常用工具集的使用、知道如何快速寻找答案、知道如何监控和优化数 据库性能、尽可能实现自动化、容量监控与规划、索引设计、数据库设计、数据库安全性、持续不断地学习和研究新版本、可以单独的编写独立的或者系统的功能脚本。这些技能基本涵盖MySQL基础理论知识、OS层面知识、硬件知识、网络知识、代码编写能力、架构设计规划能力、监控、运维理念、运维自动化等。因此,做一个DBA,不单纯的数据库层面的,基本知识涵盖很多层面,因此可以说DBA综合知识极高的复合型专业人才。
性格决定命运,态度决定一切,DBA也是这样,性格决定高度,态度决定层次。有些DBA做了很多年,依然是边缘人,成不了技术中坚,归根到底可能与本身的性格有关,不思进取,工作不主动,说多少做多少,做事邋遢,不上心,能凑合就凑合,时间观念不强等,有一部分人认为公司一个月给我1000块的工资,我干嘛去干1001块的活?只要不出人为事故就行,天灾人祸自认倒霉,这样的性格在个人职业生涯中不会有突出的成就。遇到过有些DBA都出书了,理论等技能肯定是没问题的,但是做事毛糙,考虑问题时不全面,时不时的出点小事故,有时候做事总觉得过得去就行,面试的时候给人的印象可能是极好的,可是工作起来就能看出问题了,每在一个公司做DBA业务呆的时间都不长,毕竟群众的眼睛是雪亮的,每个公司、每个领导都是需要能干活、能把活干漂亮的人。一个优秀的DBA,我心中的DBA应该是具有完美主义的人,应该具备的硬性素质包含工作认真细致,勤于思考,良好的沟通能力、具有团队合作精神,自我驱动能力或者说工作主动性强,坚韧的意志力和沉着的心态,好奇心和自信心强等;基本技能是基础,DBA必备的,只是基础而已,如果谈优秀的话,那么良好的性格和态度决定你可以在职业生涯中能走多远。
大道理大家都懂,真正能实实在在落实到实际的不多,也正是这些为数不多的人,成为业内的中坚,所谓的大牛!最后想说的是,各个行业中没有最牛,只有更牛,学无止境,在学习和实践中完善、强化自己的各方面能力,不断的提升自己。踏踏实实做事,堂堂正正做人,改变不了别人,尽最大的努力,做最好的自己!!
我心中的MySQL DBA的更多相关文章
- 招聘前端、Java后端开发、测试、Mysql DBA
公司介绍: http://www.lagou.com/gongsi/43095.html http://www.yamichu.com 简历发到: zhuye@yamichu.com 招聘职位: JA ...
- MySQL DBA的个人修养
做为一个MySQL DBA,必须具有以下的素质: 一, 身体素质 DBA必须接收和处理各种报警,不论是中午在吃饭或者凌晨三点已经进入深度睡眠.接到报警需要立即进入应急状态,找到电脑,联上网络,快速定位 ...
- MySQL DBA面试全揭秘
来源:http://ourmysql.com/archives/1426 本文起源于有同学留言回复说想了解下MySQL DBA面试时可能涉及到的知识要点,那我们今天就来大概谈谈吧. MySQL DBA ...
- Mysql DBA 20天速成教程,DBA大纲
Mysql DBA 20天速成教程 基本知识1.mysql的编译安装2.mysql 第3方存储引擎安装配置方法3.mysql 主流存储引擎(MyISAM/innodb/MEMORY)的特点4.字符串编 ...
- MySQL DBA教程:Mysql性能优化之缓存参数优化
在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感 ...
- MySQL DBA修炼秘籍
0.导读 本文主要写给那些立志成为MySQL DBA,以及正在学习MySQL的同行们,结合个人及业内其他同行的职业发展经历给大家一些参考,如何成为合格的MySQL DBA. 1.什么是MySQL DB ...
- “快的打车”创始人陈伟星的新项目招人啦,高薪急招Java服务端/Android/Ios 客户端研发工程师/ mysql DBA/ app市场推广专家,欢迎大家加入我们的团队! - V2EX
"快的打车"创始人陈伟星的新项目招人啦,高薪急招Java服务端/Android/Ios 客户端研发工程师/ mysql DBA/ app市场推广专家,欢迎大家加入我们的团队! - ...
- 【转】MYSQL DBA知识了解-面试准备
http://www.itpub.net/forum.php?mod=viewthread&tid=1825849 公司招聘MySQL DBA,也面试了10个2年MySQL DBA工作经验的朋 ...
- MySQL DBA工作角色和职责介绍
MySQL DBA分架构DBA,运维DBA和开发DBA三种角色,职责介绍如下:
随机推荐
- DotNet指定文件显示的尺寸
在项目中开发中,有时候需要将文件的尺寸进行控制,例如需要将文件的尺寸指定为字节,TB等.现在提供一个方法,实现将指定文件的尺寸, 提供:"字节", "KB", ...
- 关于一道PHP面试题的解法
参照一个int型数组,如int[] a1=new int[]{10,9,10,20,15,3,9,8,7,1,1},编写一个方法,要求输出不重复,且降序的拼接字符串(连接字符用逗号),如上数组,输出的 ...
- NPTL vs PThread
NPTL vs PThread POSIX threads (pthread) is not an implementation, it is a API specification (a stand ...
- UWP开发入门(二十二)——Storyboard和Animation
微博上有同学问我MyerSplash是如何实现那个很炫的图片点亮,然后移动到屏幕中央的效果.惭愧啊,我又不是作者哪里会知道.硬着头皮去GitHub拜读了高手的代码,自愧弗如,比我不知道高到哪里去了…… ...
- WPF老矣,尚能饭否——且说说WPF今生未来(中):策略
本文接上文<WPF老矣,尚能饭否——且说说WPF今生未来(上):担心>继续. “上篇”中部分精彩的点评: 虽然WPF不再更新了,但是基于WPF的技术还是在发展着,就比如现在的WinRT,只 ...
- 怎样使用My97日期控件
有网友说无法使用My97日期控件,Insus.NET测试一下,是可以正常使用了. 在ASP.NET MVC环境中测试. 去官网下载My97日期控件程序包: 下载解压之后,把程序的目录拷贝至projec ...
- SQL语句分组排序,多表关联排序
SQL语句分组排序,多表关联排序总结几种常见的方法: 案例一: 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列? 分析:单个表内的多个字段排序,一般可以直接用逗号分割实现. select ...
- php中的M方法
- java.net.SocketException: Software caused connection abort: socket write error
用Java客户端程序访问Java Web服务器时出错: java.net.SocketException: Software caused connection abort: socket write ...
- Lind.DDD.IoC(大叔推荐)~在服务定位器中引入IoC容器~容器的适配器
回到目录 关于依赖倒置(DIP) 高层模块不依赖于低层模块的实现,而低层模块依赖于高层模块定义的接口,通俗的讲,就是高层模块定义接口,低层模块负责实现,这在我们实际开发中经常被用到,层与层之间引用,经 ...