我心中的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必备的,只是基础而已,如果谈优秀的话,那么良好的性格和态度决定你可以在职业生涯中能走多远。

  大道理大家都懂,真正能实实在在落实到实际的不多,也正是这些为数不多的人,成为业内的中坚,所谓的大牛!最后想说的是,各个行业中没有最牛,只有更牛,学无止境,在学习和实践中完善、强化自己的各方面能力,不断的提升自己。踏踏实实做事,堂堂正正做人,改变不了别人,尽最大的努力,做最好的自己!!

转载于:https://www.cnblogs.com/agileai/p/5026346.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Visual Studio 2015 前瞻 属性初始化赋值!

通常我们建立属性的时候如果带初始化值的时候我们经常会这样处理。 class MyClass{private string _name "hello world!";public string Name {get{return _name;}set{_name value;}}} 或者也可以这样写 : class MyClass{public string Name { set; get…

火狐中的CSS Grid Inspector新增强大的功能

2019独角兽企业重金招聘Python工程师标准>>> 上周,我谈到了日常的网站浏览我用Firefox,但是在切图网做前端开发的时候我会用Chrome。 随着每个版本,FF Nightly在开发工具箱中有一些越来越棒的工具,这些更新使Firefox成…

Linux内核态之间进程通信,内核态和用户态通信(二)--实现

本文主要使用netlink套接字实现中断环境与用户态进程通信。系统环境:基于linux 2.6.32.27 和 linux 3.16.36Linux内核态和用户态进程通信方法的提出和实现用户上下文环境运行在用户上下文环境中的代码是可以阻塞的,这样,便可以使用消息队列和…

上下文无关文法

在计算机科学中,若一个形式文法 G (N, Σ, P, S) 的产生式规则都取如下的形式:V -> w,则称之为上下文无关文法(英语:context-free grammar,缩写为CFG),其中 V∈N ,w∈…

centos 安装mysql时错误unknown variable #39;defaults-file=/opt/redmine-2.6.0-2/mysql/my.cnf#39;...

找到my.cnf所在目录。运行 chmod 664 my.cnf,再启动mysql成功

p5js可以在linux上运行吗,在linux上使用python运行phantomjs

我跟随this link,现在当我输入phan然后输入tab(\t)时,它会自动完成幻影JS。在但是,如果我运行phantomJS -v或phantomJS --version,我得到:bash: /usr/local/bin/phantomjs: /lib/ld-linux.so.2: bad ELF interpreter: …

使用Instant Client配置PL/SQL Developer

之前使用PL/SQL Developer都是直接在本机安装完整版的Oracle Database,一是省事,二是可以在本机做一些demo测试;最近换了台电脑,感觉Instant Client更简单一些,分分钟配好。 先下载Instant Client,注意&…

linux脚本转换exe,Ps1 To Exe(powershell脚本转换EXE工具) V3.0.6 官方版

Ps1 To Exe是款将PowerShell脚本转换为EXE可执行文件的软件。同时软件非常小巧,功能实用,软件还支持各国的语言,有需要的小伙伴们不要错过了。(点击图片查看高清大图)【软件特色】1、Ps1 To Exe 支持多种语言2、Ps1 To Exe使用简单&#xff0…

标C编程笔记day04 预处理、宏定义、条件编译、makefile、结构体使用

预处理&#xff1a;也就是包括须要的头文件&#xff0c;用#include<标准头文件>或#include "自己定义的头文件"宏定义&#xff0c;如&#xff1a;#define PI 3.1415926查看用宏定义的值替换宏名称,如&#xff1a;gcc -E test.c带參数的宏&#xff1a;MAX(x,y) …

java数据结构系列——排列(2):有序阵列

package Array;/*** 对数组排序。当添加到阵列保持有序数组元素&#xff1b;* author wl**/ public class MyOrderArray {private long array[];private int elements;//用于记录数组中实际数据的个数public MyOrderArray(){arraynew long[50];//数组默认长度为50&#xff1b;}…

NSString 练习

//将“⽂文艺⻘青年”改成“213⻘青年”。 NSString *str "文艺青年"; NSString *str1 [str stringByReplacingOccurrencesOfString:"文艺" withString:"213"]; NSLog("%",str1); //将 整数123 转换为字符串“123”。 NSString *s …

安全市场五巨头将面临新兴厂商的挑战

赛门铁克、思科、IBM、Check Point、英特尔&#xff0c;警钟已敲响~ 2016年同比增长率11.5%的数据出台之后&#xff0c;市场研究公司科技商业研究(TBR)为来年的安全行业绘制了一幅崭新的蓝图——安全市场上现有的企业将受到新兴厂商的挑战。 展望未来&#xff0c;现有安全市场五…

linux编译运行build.sh,linux下libwebsockets编译及实例

最近想自己搭建一个webscoket协议的服务器&#xff0c;打算用libwebsockts这个库。下载代码编译。编写一个shell脚本#!/bin/sh# wget http://git.warmcat.com/cgi-bin/cgit/libwebsockets/snapshot/libwebsockets-1.4-chrome43-firefox-36.tar.gz# tar xvzf libwebsockets-1.4-…

Tomcat如何配置环境变量

1&#xff0c; JDK&#xff1a;版本为jdk-7-windows-i586.exe 下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html 2&#xff0c;tomcat&#xff1a;版本为apache-tomcat-7.0.33-windows-x86.zip 下载地址&#xff1a;http://tomcat.apache.org/ 2…

eclipse常用快捷键——非常实用

1、eclipse 查看变量或方法被调用的快捷键如下&#xff1a; &#xff08;1&#xff09;双击选中变量或者方法&#xff08;2&#xff09;键盘上CtrlshiftG组合键 2、eclipse中查看接口实现类快捷键 先找到接口类打开,然后双击接口名选中,再按住ctrlT就可以了。 3、eclipse中全局…

反编译查看源码dex2jar

为什么80%的码农都做不了架构师&#xff1f;>>> 上次说到了用apktool反编译&#xff0c;这次我们来用dex2jar 把apk解压得到文件夹 文件夹打开看到这些文件 其中这个classes.dex就是这次需要用到的字节码文件 把这个字节码文件托到dex2jar目录里 命令行编辑 得到下…

linux命令验证sqlldr,Linux:sqlldr命令

第一步&#xff1a;写一个 ctl格式的控制文件CTL 控制文件的内容 &#xff1a;load data --1. 控制文件标识infilexxx.txt --2. 要导入的数据文件名insert into table test--3. 将文件插入到数据库的 test 表中fields terminated by X09 --4. 用于分割一行中各个属性值的符号(例…

STL 中的链表排序

一直以来学习排序算法&#xff0c; 都没有在链表排序上下太多功夫&#xff0c;因为用得不多。最近看STL源码&#xff0c;才发现&#xff0c;原来即使是链表&#xff0c;也能有时间复杂度为O(nlogn)的算法&#xff0c; 大大出乎我的意料之外&#xff0c;一般就能想到个插入排序。…

cmd更换编码类型

chcp 65001 UTF-8 65001 GBK 936 本文出自 “曾颐楠的播客” 博客&#xff0c;请务必保留此出处http://zengyinan.blog.51cto.com/9524976/1721475 转载于:https://www.cnblogs.com/zengyinanos/p/5042732.html

代码混淆之后定位线上bug

代码混淆的目的 代码混淆的目的是防止竞争对手通过反编译来阅读项目代码。 Android中通过ProGuard来做代码混淆&#xff08;当然也还有其他的产品可以做代码混淆&#xff09;。 bug日志反混淆 资料&#xff1a;错误log、mapping.txt 异常log&#xff1a; mapping.txt&#xff…