数据库管理员(Database Administrator,简称DBA),是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,他属于运维工程师的一个分支,主要负责业务数据库从设计、测试到部署交付的全生命周期管理。

在大公司DBA通常分为高级DBA、中级DBA、初级DBA,他们的职责是不同的。

高级DBA:他们能够熟练阅读数据库方面的英文资料,并且都熟悉很多种操作平台下的几种大型数据库。他们知道各种不同数据库在不同环境下的优势和劣势,并能在数据库平台和数据库环境的选择方面做出决策。他们一般通晓系统架构和数据库设计,并能对数据库进行各种级别的优化。高级DBA一般都配有助手,他们更偏向做决策和计划。高级DBA往往在银行业、保险业、在线交易等对稳定性、安全性、性能都要求比较高的关键业务处理领域大显身手。

中级DBA:从业一年左右,熟悉某种操作系统环境下的数据库,比如window server 2008或者目前常用的Linux(Ubuntu、Debian、CentOS)。因为对中级DBA来讲,Windows NT和Unix是有很大差别的。中级DBA对SQL比较熟悉,他们自己购买了几本数据库方面的书籍,并深入钻研。中级DBA往往同时兼任数据库程序员,他们的工作对性能、稳定性、安全性的追求基本上不是很高,往往配合高级DBA做一些例行工作。

初级DBA:

初级DBA又称为DBBS,是英文Database Baby Sitter的缩写。初级DBA常常是兼职的,他们往往同时是程序员或者兼任其他的工作。初级DBA往往参与了很多和数据库有关的项目或工作。但是,这些项目或者工作往往是:第三方软件供应商已经安装并配置了数据库,他们只做一些监控的工作。他们能处理一些简单的问题,但大多数时候他们向应用软件供应商求救。初级DBA更喜欢图形化的数据库管理或者监控工具,他们喜欢Access这样的桌面数据库简单易用,并把这些小型数据库的经验简单地应用到大型数据库相关的工作中。

初级DBA是最好区分的。而中级DBA和高级DBA就不太好区分。他们的差别在于经验的不同和个性特点、能力方面的差异。中级DBA比较多,他们可以胜任高级DBA的大部分工作,包括:
1、数据库安装;
2、数据库配置和管理;
3、权限设置和安全管理;
4、监控和性能调节;
5、备份和恢复;
6、解决一般的问题;

今天我主要说说我公司的DBA。我所在的公司是一个初创型公司,自创建到现在已经有一年了,我并不是公司的第一批员工。初创公司的好处是最锻炼人,最能成长一个人。但是弊端也不少以下我从这么几个方面谈谈初创公司的弊端?

(1)升职加薪没有一个完善的制度,完全是由所在部门的经理或者其他高层人士拍板决定,很长时间可能会停留在固定的薪资而不变;

(2)没有公积金,初创公司一般资金有限能最大程度减少成本就减少成本(当然了,也不排除有部分公司会有,但是就我目前认识的朋友中,有好几个在创业公司,基本上是没有公积金的,有的是等两年到三年相关的有稳定的收入,然后才给员工公积金;

(3)初创公司没有固定的收入来源,除了老板注入的资金外,基本就没有了,除了中途来一个投资人,注入资金,不然很长一段时间是由老板自己垫付工资及其五险等等;

(4)解雇的风险,一般情况下,初创公司很少会跟员工签合同,签合同是一件很麻烦的事情,不签合同可以适当降低风险;

(5)开发流程不是非常合理和人员调配不是十分合理,往往一人兼任多个岗位,一旦沟通方面有问题,可能使项目开发进度延迟;

(6)加班是没有工资的(不单单是初创公司,很多中小型公司都是这样的);

不过好的方面也是十分突出的,这里就说一点,那就是对于个人的各方面能力提升是非常有帮助的,比如就我个人,从开发到运维,再到测试,再到DBA。有的时候还得兼任下产品宣传工作。有时还得出差调调设备之类的。不光光锻炼一个人的学习能力,同时锻炼一个人的沟通能力及其心理素质抗压能力等。

下面进入正题:

作为一名DBA以现在我所在的公司为例,我打算应该统一下规范,而不是各打各的想怎么改就怎么改。想怎么改就怎么改的痛苦我已经体会过一次了,不想再体会了。

以下是我的想法和将要实践的:

作为一名DBA,他的职责应该要做到这些:

(1)安装和升级数据库服务器,以及应用程序工具;

(2)数据库设计系统存储方案,并制定未来的存储需求计划;

(3)一旦开发人员设计了一个应用,就需要DBA来创建数据库存储结构,创建数据库对象;

(4)根据开发人员的反馈信息,必要的时候,修改数据库的结构;
(5)登记数据库的用户,维护数据库的安全性

(6)控制和监控用户对数据库的存取访问;

(7)监控和优化数据库的性能;

(8)保证数据库的使用符合知识产权相关法规;

(9)维护适当介质上的存档或者备份数据;

(10)制定数据库备份计划,灾难出现时对数据库信息进行恢复;

针对上述说的我进行细化:

针对(1),主要考虑数据库更新升级,性能上的提升或者是bug修补,作为dba需要关注数据库技术前沿,目前应用比较广的是MySQL,例如阿里的淘宝使用的就是MySQL。
关于安装或升级可参考例子:https://www.cnblogs.com/sunofsummer/p/6381206.html。

针对(2),本着业务可扩展性原则,作为DBA必须要熟悉整个业务架构和业务逻辑,以CSDN为例,最初的CSDN是没有多样性的功能,例如学院、招聘等等。而且就是没有广大的用户群体,当用户群体增长到一定的程度时,由一百万到一千万时,数据库的设计尤其重要,不仅仅需要主从复制,以保证数据的一致性,还得分库分表。

针对(3),很多小公司是没有DBA的,一般情况由开发组长进行表的设计,同时其组员也可以参与设计甚至自主设计。这样存在一个重大的弊端是,当人数过多时,你改这个字段,我改那个字段,你新增这个表,我新增或者删除另外一个表,当业务愈发复杂,同时表之间关系耦合性强,那么对于整个系统而言是一次毁灭性的打击。最理想的状态是,开发人员与业务人员沟通好,并编写一个业务需求设计文档和表设计文档,然后由DBA进行审核,DBA有时需要同业务人员及开发人员沟通。

针对(4)需求变动是常有的事情,需求变动通常伴随着代码的修改,代码的修改一般涉及实体、接口、sql(这里以ssm框架实现的项目为例)。实体对应表结构,接口对应着业务逻辑,sql是操作数据库的专用语言。

针对(5),数据库的安全性尤其重要至关重要,前段时间的华住就是一个例子。一般连接数据库有这么几个要素?
a.建立连接:
b.加载驱动;
c.操作数据库的用户和密码;
一般情况下,查看访问数据库用户,可通过show processlist命令查看 如果有未知的用户和IP访问,这时就必须引起重视了。

针对(6),最近的顺丰某位程序员不小心删库,主要原因在于该程序员,根本原因在于制度上的不完善。作为DBA,特别是高级DBA必须要控制用户操作权限。

针对(7),实时监控的工具有zabbix和nagios,监控的目的是为了确保mysql运行是否是正常的。同时也是为了修改配置优化I/O,有一个实时监控作为一个衡量标准,比较优化前后是怎么样的。

针对(8),相关的知识产权法律还是要懂的,不懂法是一件很可怕的事情,所以这里要强调一下,程序员还是得多多了解一下法律,之所以强调是因为程序员大多比较老实本分,性格比较内向,但是往往也是容易被罪恶伤害的一方,比如之前WePhone创始人被逼自杀。所以说前车之鉴在此,IT的小伙伴们要多多注意。

针对(9),维护适当介质上的存档或者备份数据,这里要说一下,适当的存档分门别类为的是,以后如果查找起来或者是恢复起来有一个依据和标准,特别是备份,万一因为某某不慎操作导致数据丢失,如果没有实时备份的话,那么就挺坑爹的。作为DBA,其数据备份和恢复是必要的手段。

针对(10),其实和(9)的道理是一样的。

作为DBA的核心目标:保证数据库管理系统的稳定性、安全性、完整性和高性能。

另外稍微说一下,
数据库开发工程师与数据库管理员的区别,区别如下所示:

(1)数据库开发工程师的主要职责是设计和开发数据库管理系统和数据库应用软件系统,侧重于软件研发;

(2)DBA的主要职责是运维和管理数据库管理系统,侧重于运维管理;

小结:

今天主要侧重点在于DBA的职责和目标,DBA同运维也一样,有些时候还是很容易沦为专业背锅户的。接下来我将会侧重写怎么做会更好。

我目前用的比较多的是MySQL。我的很多朋友,他们的公司也是用MySQL。MySQL博大精深,在此推荐一本书《高性能MySQL》。这本书是MySQL的创始团队写的,很不错很好,不过阅读起来可能会有一定的难度,专业DBA手头必需书,同时也是全栈工程师手头必备书。建议有使用MySQL开发一年以上的大中型应用的朋友们,都可以看看。我相信你们看到这本书一定会有不少的启发的。

说说DBA职责和目标的更多相关文章

  1. oracle dba 职责, 及个人需要掌握内容

    ORACLE DBA 职责, 基本相当于日常工作. 0. 数据库设计 1. 模式对象的创建与管理(table, index 等等) 2. 事物管理, 例如并发等 3. SQL 调优 只是针对SQL的 ...

  2. DBA职责和任务

    DBA守则在对生产环境进行修改前,一定要进行备份,一定要在测试环境进行测试,否则不要进行轻易的更改一次尽量只做一件事,不要受环境影响 DBA的十大任务1.了解和掌握硬件环境2.规划数据库3.安装数据库 ...

  3. DBA日常工作内容和职责

    1.统计数据库总容量 按表空间分别统计: 总容量(单位为M): 2.计算用户下所有对象大小 3计算USERS表空间的大小 4计算该USERS表空间对象大小 ---------------------- ...

  4. 我心中的MySQL DBA

    原文网址链接:http://wangwei007.blog.51cto.com/68019/1718311 MySQL是一个跨平台的开源关系型数据库管理系统,目前MySQL被广泛地应用在Interne ...

  5. 老李分享:DBA

    poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-845052 ...

  6. 杂项-职位-DBA:DBA

    ylbtech-杂项-职位-DBA:DBA  数据库管理员(Database Administrator,简称DBA),是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,属于运维工程师的 ...

  7. SQL Server DBA工作内容详解

    在Microsoft SQL Server 2008系统中,数据库管理员(Database Administration,简称为DBA)是最重要的角色.DBA的工作目标就是确保Microsoft SQ ...

  8. 赶集网三年 DBA 总结(转)

    2012年初入职赶集,当时处在流量讯猛增长的阶段,3年DBA生涯收获坡多,其实坑更多(泪... 后来在做开发时,慢慢体会到 ”运维“ 和 “开发” 确实存在沟通问题:知识不对称.如何解决呢?先总结下这 ...

  9. oracle 学习

    一.数据库语言部分1. SQL语言:关系数据库的标准语言2. PL/SQL:过程化语言Procedural Language3. SQL*Plus:简单的报表,操作系统接口 4. Oracle 8.0 ...

随机推荐

  1. MVC 下拉框联动效果(单选)

    下拉框联动效果,我们以部门--职位为例,选择部门时,关联到该部门的职位.下拉框的写法就不多说了,详细请参照前文. 视图: 其中,dept是部门的属性,deptlist是部门下拉框的属性,job是职位的 ...

  2. ASP.NET MVC4 新手入门教程之九 ---9.查询详情和删除方法

    在本教程的这一部分,您会检查自动生成的Details和Delete方法. 检查详细信息和删除方法 打开Movie控制器并检查的Details的方法. public ActionResult Detai ...

  3. easyui前后台转义字符和普通字符的相互转换问题

    昨天碰到一个问题,公司前端使用的是easyui和jquery,页面textarea编写了html代码,传入后台变成了<>类型代码,这样保存到数据库是没有问题的,但是在页面显示的时候需要显示 ...

  4. python6

    集合-set    集合是高中数据中的一个概念.    确定的一堆无需数据,集合中的买个数据称为一个集合       集合的定义         1.创建空集合             变量 = se ...

  5. mui ajax 应用的跨域问题

    1.首先在mui.ajax的error函数里出现: “syntaxerror unexpected token <” 这样的错误,那么在 mui.ajax中的type写成  JSONP ,后台需 ...

  6. Java从入门到精通——数据库篇Mongo DB 导出,导入,备份

    一.概述    本篇博客为大家讲述一下Mongo DB是如何导入导出数据,还有就是备份数据的.    在下面操作的时候需要把Mongo DB的服务端打开才能操作. 二.导出.    MongoDB的导 ...

  7. How to use DBVisualizer to connect to Hbase using Apache Phoenix

    How to use DBVisualizer to connect to Hbase using Apache Phoenix Article DB Visualizer is a popular ...

  8. C# 3.0-c#5.0 变化

    最近发现对于C#的使用水平一只停留在3.0的程度 对于4.0 5.0的新特性使用的很少,写一篇文章记录一下增加一下认识. C# 3.5 扩展方法 扩展方法所在的类和扩展方法必须是静态的 并且扩展方法第 ...

  9. 浅谈App原生开发、混合开发及HTML5开发的优劣

    App混合开发(英文名:Hybrid App),是指在开发一款App产品的时候为了提高效率.节省成本即利用了原生的开发技术还应用了HTML5开发技术,是原生和HTML5技术的混合应用.目前App的开发 ...

  10. Linux 内核超时导致虚拟机无法正常启动

    问题描述 当 Linux 虚拟机启动时,通过串口输出或者启动日志, 观察到超时的报错.导致虚拟机无法正常启动和连接. 问题分析 常见的超时报错范例如下: 复制 INFO: task swapper:1 ...