0810DBA工作内容计划Word文档下载推荐.docx
- 文档编号:21965381
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:17
- 大小:29.72KB
0810DBA工作内容计划Word文档下载推荐.docx
《0810DBA工作内容计划Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《0810DBA工作内容计划Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
2.备份事务日志15
3.备份数据库及其日志间的相互作用16
(六)万一系统失败时恢复数据库系统16
1.恢复数据库步骤16
2.产生用户信息表,并为信息表授权18
(七)监视系统运行状况,及时处理系统错误19
一、DBA的自我认知
数据库管理员——DBA,简单讲是很多事情对很多人。
在一个中小型企业里,他的工作范围非常广,而在一个正规管理的大型企业里,他的工作就会非常专一。
不管你的公司是做开发的,还是应用第三方的开发工具,都需要决定是否雇用一个DBA。
(一)DBA应该具备的素质
DBA应具备的素质分两个层次,一个从技术角度,另外一个文化的角度。
作为一名DBA必须有全面知识。
从技术角度来说,我们会分成两大块,硬件和软件支持。
1.技术角度之一——硬件
数据库运行到的设备都是大型设备,便宜一点像一些PC服务器,小的十几万,一些小型机50、60万,一些大型机价钱更贵了。
我们要对硬件,主机比较了解,因为数据库直接运行在主机上,如果一个DBA对主机不熟悉,你怎么能说从何管理数据库,所以我们对主机这块必须非常了解。
另外除了对主机我们对磁盘阵列也必须了解,因为当前虽然技术发展,很多银行、证券公司,一些大的网站,他们都是提供7×
24小时,7天24小时不间断运转,所以他们的设备,要提供一种高可用性,需要一些大型设备,磁盘阵列也要大型的。
另外DBA对网络也应该有一定了解,现在全球经济是你中有我,我中有你,为什么在这个金融危机发展的前期,各个国家都是各自为政来处理金融危机,但是各个国家包括美国,加拿大,其他国家采取一些措施对金融危机没有产生多大的效果。
这次金融危机和美国以前发生的金融危机不一样,以前美国金融危机仅仅是美国一个国家的金融危机,而现在金融危机是全球性,一个公司在全球有很多分公司,它的网络在逻辑上是联在一起,作为一个DBA要管理可能不仅仅是你本地数据库,或者是你中国的数据库,可能你管理是全世界,这些数据库物理可能是分布在韩国日本,所以你对网络也有一定的了解,作为一个DBA硬件层次必须了解这几个方面。
2.技术角度之二——软件
软件方面我们也要了解,首先就是操作系统,我们数据库大部分运行在Linux等平台上,如果我们DBA对他们的系统不了解,那么我们无从管理他们的数据库,因为数据库是运行在操作系统之上,操作系统就是轴,轴功能不好,其他怎么能好的。
软件包括操作系统,另外就是应用程序,我们一个数据库运行最终目的,是为了给外面人或者客户提供服务,就存在就是说我们要给其他应用程序提供一个交互,如果就是说你对应用程序如何访问数据库我们连这个原理都不了解,那么我们对数据库进行管理呢?
另外重要就是我们了解运用程序如何访问数据库,为什么这点非常重要,因为我们了解这个机制,我们才能知道如何提高我们数据库性能,如何提高我们数据库的最大化,这块其实我也想多讲一下,因为其实数据库经常会发生性能下降的问题,根据有经验DBA分析,数据库性能降低60%,是和我们硬件有关,我们硬件已经达到极限,包括内存,CPU计算能力,网络传输能力已经达到极限,这些是40%。
60%是我们数据库设置不当导致效率低下,我们进行数据库性能调整,第一点首先要着眼于60%的软件问题,40%是发展我们的硬件。
3.文化层面
我们从大的方面讲了技术层面,但要想成为一个优秀DBA有两个方面,一个是技术,一个是文化层面。
文化层面就是作为一个优秀的DBA,第一必须冷静,为什么呢,数据库经常发生一些问题,当你用数据库最新版本,把最新应用用到实际工作当中去会遇到很多问题,而且这些问题你在以前没有看到过,谷歌或者XX也找不到答案,遇到这种情况必须保持冷静。
另外就是必须谨慎,当你在一个公司管理一个很重要数据库,出现问题的时候,首先你的客户,同事正在等待你解决问题,老板正在催促你,CTO在督促你,这个时候必须保持冷静,因为保持冷静才能静下心来,想方设法解决问题,找到这个问题答案。
如果这个时候不冷静,找不到答案,还会给公司带来损失,或导致一些其他的故障。
所以作为DBA冷静、谨慎这两点是非常重要的。
另外就是DBA必须有沟通的技巧,这也是非技术问题。
大家知道作为一个DBA他要服务的对象很多,大家有时候觉得他是一个很神圣的角色,其实不是这样,DBA其实是一个很下面的角色,为什么呢?
因为这个角色为很多人提供服务,你要为客户提供服务,要为其他客户提供支持,你要给开发人员提供技术培训,你要给你的CTO提供整个公司数据库的硬件和软件规划,还有要给你CTO提供性能方面咨询。
所以作为一个DBA你要为很多人服务,还有特别是对市场人员,在竞标一个项目的时候,DBA需要为市场人员提供一些数据方面技术支持,所以DBA也需要和市场人员沟通,所以一个DBA做得好做不好,技术是一个层次,沟通也非常重要,跟客户沟通不好,得罪公司客户;
和开发人员沟通不好,开发人员可能写不出来高效的程序,不和开发人员进行合作可能导致公司整个项目往后推了;
不和市场人员沟通好,市场人员得出数据不利于这个公司发展;
不和自己CTO沟通好,不知道你的CTO到底让你做什么,完成什么任务。
所以DBA的沟通能力是非常重要的。
自信对于DBA非常重要,永远记住,不知道一个问题的答案和不知道怎么去解决它,不是最坏的事情,而最坏的事情是不知道怎么去找出答案和找出解决问题的方法。
要有强烈的好奇心,才能跟上数据库的不断改变。
顽强、坚韧同样重要,很可能有时要二天二夜离不开你的数据库。
机智机敏,使你不断的积累工作经验和解决问题的技巧。
要自进、上进。
作为一个DBA,你的业余时间大部分是在读与DBA相关文档和参考书,即然你想上这条“贼船”,就要提前做好这个思想准备。
注意细节,对每一个微小的变化和问题,都要问个为什么,然后想尽一切办法去把他搞清楚。
另外一点,作为一个DBA必须有挑战精神,为什么必须有挑战精神,因为数据库在不断发展,公司在不断壮大。
当公司业务壮大,数据量不断壮大,我们需要一些高端设备,包括硬件软件,我们需要应用新的技术解决我们面临的问题,如果一个DBA没有挑战精神,几年以后你发觉你已经被整个IT业远远落在后面了,所以说一个DBA必须有挑战性,想方设法运用最新技术解决公司问题,新的技术能够让我们业务提高好几倍,所以说DBA另外一个精神就是必须有挑战精神。
这就是说作为一个DBA必须要技术全面,第二就是必须谨慎,小心,有挑战精神。
(二)DBA的等级
DBA的等级并不是很严格的。
按照对数据库的掌握情况,我简单地分成三个等级:
初级Primary、中级Intermediate和高级Senior。
初级DBA又称为DBBS,是英文DatabaseBabySitter的缩写。
初级DBA常常是兼职的,他们往往同时是程序员或者兼任其他的工作。
初级DBA往往把个人简历写得很棒,参与了很多和数据库有关的项目或工作。
但是,这些项目或者工作往往是:
第三方软件供应商已经安装并配置了数据库,他们只做一些监控的工作。
他们能处理一些简单的问题,但大多数时候他们向应用软件供应商求救。
初级DBA更喜欢图形化的数据库管理或者监控工具,他们喜欢Access这样的桌面数据库简单易用,并把这些小型数据库的经验简单地应用到大型数据库相关的工作中。
初级DBA是最好区分的。
而中级DBA和高级DBA就不太好区分。
他们的差别在于经验的不同和个性特点、能力方面的差异。
中级DBA比较多,他们可以胜任高级DBA的大部分工作,包括:
数据库安装
数据库配置和管理
权限设置和安全管理
监控和性能调节
备份和恢复
解决一般的问题
中级DBA往往从业一年左右,熟悉某种操作系统环境下的数据库。
因为对中级DBA来讲,WindowsNT和Unix是有很大差别的。
中级DBA对SQL比较熟悉,他们自己购买了几本数据库方面的书籍,并深入钻研。
中级DBA往往同时兼任数据库程序员,他们的工作对性能、稳定性、安全性的追求基本上不是很高,往往配合高级DBA做一些例行工作。
高级DBA在国内是非常少的。
他们购买了太多的数据库方面的英文资料,也许是托朋友从Amazon买的。
相对于他们的报酬来讲,买书的钱是很少的一个比例。
高级DBA一般都熟悉很多种操作平台下的几种大型数据库。
他们知道各种不同数据库在不同环境下的优势和劣势,并能在数据库平台和数据库环境的选择方面做出决策。
他们一般通晓系统架构和数据库设计,并能对数据库进行各种级别的优化。
高级DBA一般都配有助手,他们更偏向做决策和计划。
高级DBA往往在银行业、保险业、在线交易等对稳定性、安全性、性能都要求比较高的关键业务处理领域大显身手。
(三)DBA如何提升能力
对于没有经验又想从事DBA工作的人的建议:
现在PC已经很发达了,我们不一定非要到很真实的环境才能获得一些经验,我们在平时的学习中我们也可以学到一些经验。
比如说数据库这块,我在家可以先学习一些数据库理论知识,这些理论知识非常重要,为你以后在工作中解决问题打下一定基础,在你学了一些理论知识以后,你要进行一些实验,比如说有朋友说我要到真实环境才可以进行实验,其实不是这样。
在数据库管理中,80%的问题在我们学习阶段也可以碰到。
比如说你不知道数据库down机以后是怎么回事,很简单,里把你机械的电源拔掉,或者你把操作系统直接关掉,或者你把数据库某些重要文件删掉。
可以模拟一些故障来解决,你会想这些问题是怎么产生的,把以前学习的内容调动起来,你会想我要解决这些问题需要用哪些知识,是基础知识网络结构还是一些备份,在解决问题发觉你学到知识往往不是数据库,引起数据库故障有很多,有硬件,操作系统本身的原因,当你制造一个故障解决了故障以后,你会发觉你成长非常快,硬件知识、数据库知识补上来了。
对于想入行DBA的朋友,平时可以在自己实验中获得很多经验,当正式工作时,会发觉很多问题是你遇到过的,这些解决起来会很简单,不会战战兢兢的。
DBA这个职位需要有挑战精神,我们要面对这些挑战,我们通过克服这些挑战,不断让自己提高很快,当你遇到一个问题的时候,这个问题很难,解决整个技术的过程和矛盾的,在这个各个当中压力非常大,你要让所有的人满意,而且DBA的另外一个特性就是反映必须快速,因为一个公司不可能把机器停24小时,你需要在很短时间内把故障排除了,但是当你解决这个问题以后,你发觉你的进步非常大,你从一个高点又进入了另外一个高点,所以在工作以后,应该不断充实自己。
(四)DBA最大的困难就是自己
DBA成长的过程中最大的困难就是自己。
因为在挑战过程中,很多时候会非常沮丧,因为当我们遇到一个问题的时候,可能我们自己解决不了,我们会想办法向别人求救,我们可能用XX,谷歌搜索,当你所有的努力没有得到正确答案的时候最沮丧,也是最困难的时候,你必须强迫自己继续努力,当你重复了一次又一次,失败了以后,最大的敌人就是你自己。
继续走下去,很多问题可以想出答案,可以想到一种间接的解决方法,我们是自己的最大的敌人,如果我们能够克服自己我们就能够往前走。
二、DBA的工作内容
(一)DBA的主要职责
1.安装和升级数据库服务器,以及应用程序工具构建和配置网络环境.
2.熟悉数据库系统的存储结构预测未来的存储需求,制订数据库的存储方案.
3.根据开发人员设计的应用系统需求创建数据库存储结构.
4.根据开发人员设计的应用系统需求创建数据库对象
5.根据开发人员的反馈信息,在必要的时候修改数据库的结构
6.管理数据库的用户维护数据库的安全性
7.控制和监控用户对数据库的存取访问
8.监控和优化数据库的性能
9.制定数据库备份计划,灾难出现时对数据库信息进行恢复
10.备份和恢复数据库
11.联系数据库系统生产厂商,跟踪技术信息
12.解决客户端中间层和服务器的链接问题
13.保证安全连接
1.每日工作
1确保服务器工作状态正常,各类数据库状态正常
2检查硬盘空间是否够用
3查看数据库日志,查看跟踪文件,检查是否有错误信息
4检查备份的有效性
5通过系统的性能监视器对服务器的性能参数监控发现数据库的性能是否下降,寻找原因并解决
6填写dba日志
2.每周工作
1监控数据库对象的空间扩展情况
2决定是否调整存储参数
3对系统健康检查
4检查删除没有任何意义的数据对象
5检查删除没有意义的约束和触发器
6对每周的备份检查处理
3.每月工作
1根据上面的检查情况,分析数据库中是否有影响性能的存储碎片存在
2根据数据库性能的历史数据,决定如何优化性能
3处理每日每周每月的备份
4总结工作,提出下一步的管理计划
(二)定期提供数据库健康检查和系统优化建议
1.提供系统硬件、操作系统运行报告
✧CPU情况报告
●.系统资源对CPU的使用情况
●.用户资源对CPU的使用情况
●.应用程序对CPU的使用情况
●.每天中CPU的使用模式(按小时计)
●.每天中应用程序对CPU的使用模式(按小时计)
●.CPU的活动分布
●.CPU的应用分布
●.CPU使用的高峰
✧内存情况报告
●.每秒对虚拟内存的磁盘读
●.内存的使用情况
●.内存分页
●.虚拟内存
✧磁盘情况报告
●磁盘输入/输出:
●.磁盘总体使用情况
●.数据库管理系统和应用程序对磁盘的使用情况
●.磁盘输入/输出等待的原因
✧网络情况报告
●.网落使用的高峰
●.信息包的传输率
●交换区、资源队列和系统调用率
✧数据库系统情况
由于不同数据库,其软件结构也不尽相同,但一般来讲,从以下几个方面:
●.数据库的物理结构和逻辑结构
●.数据库的CPU利用率
●.数据库的内存利用率,包括数据缓冲区,命令缓冲区等
●.数据库的磁盘I/O
●.数据库的网络利用率
●.数据库运行频繁的SQL语句,从而确定关键事务
●.索引的使用,查询构造,数据库锁的行为等等
✧应用系统情况
●.应用系统的物理结构和逻辑结构
●.应用系统CPU利用率
●.应用系统内存利用率,包括数据缓冲区,命令缓冲区等
●.应用系统磁盘I/O数据库的网络利用率
●.检查最消耗系统资源的应用进程,分析应用程序的执行逻辑
2.定期系统安全检测和审计检测
●主要定期完成各个系统数据库的用户名密码检查,提供用户名、密码安全检查报告
●对数据库的审计日志进行检查,审核各个用户对系统的操作的合法性,发现系统数据安全隐患,提供改进建议和报告
三、mysql数据库日常维护
(一)建立一个数据库表维护规范
在一个定期基础而非等到问题出现才实施数据库表的检查是一个好主意。
应该考虑到建立一个预防性维护的时间表,以协助自动问题,是你可以采取措施进行修正:
执行常规的数据库备份并允许更新日志。
安排定期的常规表检查。
通过检查表,将减少使用备份的机会。
这个工作,在Windows下使用计划任务,Unix使用cron作业(一般从运行服务器所示用的该帐号的crontab文件中调用),并且很容易实现。
例如,你作为mysql用户运行服务器,则可以从mysql的crontab文件中建立定期检查。
如果你不知道如何使用cron,应使用下列命令查看相关的Unix手册页:
$mancron
$mancrontab
作为服务器启动前的系统引导期间检查数据库表。
及其可能会因早期的崩溃而重新启动。
如果这样的花,数据库表可能已被毁坏,应该对它进行彻底检查。
(二)创建一个适用于定期维护的脚本
为了运行自动的表检查,可以编写一个脚本,将目录改变为服务器数据目录并对所有的数据库表进行myisamchk和isamchk。
如果你只有MyISAM表或者只有ISAM表,则只需要其中一个程序,可以将无关的那个程序从脚本中注释掉。
该脚本可以被cron调用,或者在系统启动期间被调用。
为维护目的,你能使用myisamchk-s检查桌子。
-s,--silent选项使myisamchk和isamchk以沉默模式运行,只有当错误出现时,才仅仅打印消息。
另外myisamchk支持--fast选项,该选项允许程序跳过自上次检查以来没有被修改过的人和表。
1.一个简单的脚本
例如,一个较为容易理解的简单脚本,它在服务器目录中检查所有表(DATADIR应该修改成对应你系统的合适的值):
#!
/bin/sh
cdDATADIR
myisamchk
--silent
--fast
*/*.MYI
isamchk
*/*.ISM
2.一个较为复杂的脚本
实用此脚本的一个潜在的问题时:
如果有许多表,通配符模式‘*/*.MYI’和‘*/*.ISM’可能会由于“toomanyarguments(参数过多)”或者命令行超过shell允许的长度而无法使用。
脚本可以进一步修改为(同样,DATADIR修改为适合你系统上的值):
datadir=DATADIR
find$dtatdir–name“*.MYI”-print|xargsmyisamchk
--fast
find$dtatdir–name“*.ISM”-print|xargsisamchk
--silent
当然你也可以在脚本中指定多个数据库目录。
3.如何执行脚本
假定你将脚本存为check_tables,应该确保它是可执行的,当然建议你首先切换到专用户mysql:
$sumysql
$vicheck_tables(编辑脚本,你也可以使用你喜欢的编辑器)
$chmod+xcheck_tables
手工执行,检测你的脚本是否有错误:
$check_tables
在理想情况下应该没有输出结果。
如果系统不支持外部锁定,游客蒽那个服务器将在你检查表时改变它。
此时,脚本可能会把实际没有问题的表报告呈有问题的。
如果系统能够支持外部锁定,则该问题就不会出现。
(三)在unix中用cron定期检查表
以下将说明如何建立脚本,使它通过cron并在系统启动期间执行。
在这小节的例子中,假定把脚本安装在/usr/local/mysql/bin中,你需要修改该过程来检查每个服务器数据目录中的表。
你可以使用不同的check_tables拷贝来进行,或者通过修改它来接受一个命令行参数进行,该参数指定了想要检查的数据目录。
假定对mysql用户从crontab文件中调用脚本check_tables。
1.首先用该用户的身份注册
2.生成一个临时文件,捕获已经调度的任务
$crontab–l>
/tmp/entries
3.在生成的文件最后一行添加内容
把这一行00**0
/usr/local/mysql/bin/check_tables加到临时文件的最后一行:
$echo
“0
0
*
/usr/local/mysql/bin/check_tables”>
>
它告诉cron在每个星期日的凌晨0时运行此选项。
可以按要求改变时间或安排。
有关这些选项的格式,参阅crontab的手册页。
4.重新安排调度
$crontab/tmp/entries
如果检查后有任何信息,cron作业通常生成一个邮件消息给用户。
由于使用--silent选项,只有表存在错误时,才会有输出,也才会有邮件信息,因此不会产生大量无用邮件信息。
(你现在应该明白,脚本采用--silent选项的原因)
对于这样定期的维护,你的服务器最好支持外部锁定,这样在检查表时,就不会发生访问冲突的情况。
如果无法做到这一点,你最好在没有用户使用服务器的时候维护,例如凌晨。
(四)在系统启动期间检查表
如果你使用的是BSD风格的系统,例如OpenBSD,FreeBSD等,并且已经将服务器的启动命令增加到/etc/rc.local,要在启动期间检查表,可以在启动服务器前从相应的文件中调用check_tables。
如果对于使用SytemV风格的启动方法的系统,例如,大多数的商业Unix系统,其启动方法是从/etc/rc.d目录之一调用mysql.server脚本,则在数据库启动前检查表的过程比较复杂,因为这些目录中的脚本必须理解start和stop参数。
例如,象这样编写脚本,取名mysql.check当参数时start时调用check_tables,当参数是stop时什么也不做:
#Seehouweserecalled
case
“$1”
in
start)
echo–n“CheckingMySQLtables:
”
if
[-x/usr/local/mysql/bin/check_tables];
then
/usr/local/mysql/bin/check_tables
fi
;
stop)
#don’tdoanything
*)
echo“Usage:
$o{start|stop}”
exit1
esac
exit0
现在你可以安装mysql.check了,该过程类似乎在第二章介绍的让服务器自动启动的安装mysql.server的过程。
必须给mysql.check一个运行级目录中较低的前缀号,才能使它在mysql.server前运行。
例如,如果在运行级目录中以S99mysql.server连接到mysql.server,则应该以S98mysql.check链接到mysql.check。
由于Linux集中了BSD和SytemV系统的优点,所以,上面两种方法完全适用于Linux。
为了简便起见,一般使用第一个方法。
(五)备份系统数据
SYBASE系统的备份与恢复机制保证了在系统失败时重新获取数据的可能性。
SQLerver提供了两种不同类型的恢复机制:
一类是系统自动完成的恢复,这种措施在每次系统启动时都自动进行,保证了在系统瘫痪前完成的事务都写到数据库设备上,而未完成的事务都被回退;
另一类是人工完成的恢复,这是通过DUM和LOAD命令来执行人工备份和恢复工作。
因此定期备份事务日志和数据库是一项十分重要的日常维护工作。
1.备份数据库
每一个数据库都应在创建之后卸出,从而提供一个装入基点。
在此之后按排定的时间周期表卸出。
比如每周五卸出数据库。
对一般
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 0810 DBA 工作 内容 计划