下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、建立一个数据库表维护规范在一个定期基础 而非等到问题出现才实施数据库表的检查是一个好主意。应该考虑到建立一个预防性维护的时间表,以协助自动问题,是你可以采取措施进行修正:执 行常规的数据库备份并允许更新日志。安 排定期的常规表检查。通过检查表,将减少使用备份的机会。这个工作,在Windows下 使用计划任务,Unix使用cron作业(一般从运行服务器所示用的该帐号的crontab文件中调用),并且很容 易实现。例如,你作为mysql用 户运行服务器,则可以从mysql的crontab文件中建立定期检查。如果你不知道如何使用cron,应使用下列命令查看相关的Unix手册页:$man cron$m
2、an crontab作为服务器启动前的系统引导期间检查数据库表。及其可 能会因早期的崩溃而重新启动。如果这样的花,数据库表可能已被毁坏,应该对它进行彻底检查。创建一个适用于定期维护 的脚本为了运行自动的表检查,可以编写一个脚本,将目录改变为服务器数据目录并对所有的数据库表进行 myisamchk和isamchk。如果你只有MyISAM表或者只有ISAM表,则只需要其中一个程序,可以将无关的那个程序从脚本中注释掉。该 教本可以被cron调用,或者在系统启动期间被调用。为维护目的,你能使用myisamchk -s检查桌子。-s,-silent选项使myisamchk和isamchk以沉默模式运行,
3、只有当错误出现时,才仅仅打印消息。另外 myisamchk支持-fast选项,该选项允许程序跳过自上次检查以来没有被修改过的人和表。1. 一个简单的脚本例 如,一个较为容易理解的简单脚本,它在服务器目录中检查所有表(DATADIR应该修改成对应你系统的合适的值):#!/bin/shcd DATADIRmyisamchk -silent -fast */*.MYIisamchk -silent */*.ISM2. 一个较为复杂的脚本实用此脚本的一个潜在的问题时:如果有许多表,通配符模式*/*.MYI和*/*.ISM 可能会由于“too
4、many arguments(参数过多)”或者命令行超过shell允许的长度而无法使用。脚本可以进一步修改为(同样,DATADIR修改为适合你系统上的 值):#!/bin/shdatadir=DATADIRfind $dtatdir name “*. MYI” -print | xargs myisamchk -silent -fastfind $dtatdir name “*. ISM” -print | xargs isamchk -silent当 然你也可以在脚本中指定多个数据库目录。3. 如何执行脚本假定你将脚本存为 check_tables,应该确
5、保它是可执行的,当然建议你首先切换到专用户mysql:$su mysql$vi check_tables(编辑脚本,你也可以使用你喜欢的编辑器)$chmod +x check_tables手 工执行,检测你的脚本是否有错误:$check_tables在 理想情况下应该没有输出结果。如果系统不支持外部锁定,游客蒽那个服务器将在你检查表时改变它。此时,脚本可能会把实际没有问题的表报告呈有问题的。如果 系统能够支持外部锁定,则该问题就不会出现。在unix中用cron定期检查表以 下将说明如何建立脚本,使它通过cron并在系统启动期间执行。在这小节的例子中,笔者假定把脚本安装在/usr/local/m
6、ysql /bin中,你需要修改该过程来检查每个服务器数据目录中的表。你可以使用不同的check_tables拷贝来进行,或者通过修改它来接受一个命令行参 数进行,该参数指定了想要检查的数据目录。假定对mysql用户从crontab文件中调用脚本check_tables。1. 首先用该用户的身份注册$su mysql2. 生成一个临时文件,捕获已经调度的任务$crontab l>/tmp/entries3. 在生成的文件最后一行添加内容把这一行0 0 * * 0 /usr/local/mysql/bin/check_tables加到临时文件的最后一行:$echo
7、“0 0 * * 0 /usr/local/mysql/bin/check_tables” >>/tmp/entries它 告诉cron在每个星期日的凌晨0时运行此选项。可以按要求改变时间或安排。有关这些选项的格式,参阅crontab的手册页。4. 重新安排调度$crontab /tmp/entries如 果检查后有任何信息,cron作业通常生成一个邮件消息给用户。由于使用-silent选项,只有表存在错误时,才会有输出,也才会有邮件信息,因此不 会产生大量无用邮件信息。(你现在应该明白,脚本采用-silent选项的原因)
8、对于这样定期的维护,你的服务器最好支持外部锁 定,这样在检查表时,就不会发生访问冲突的情况。如果无法做到这一点,你最好在没有用户使用服务器的时候维护,例如凌晨。在 系统启动期间检查表如果你使用的是BSD风格的系统,例如OpenBSD,FreeBSD等,并且已经将服务器的启动命令增加到/etc /rc.local,要在启动期间检查表,可以在启动服务器前从相应的文件中调用check_tables。如果对于使用Sytem V风格的启动方法的系 统,例如,大多数的商业Unix系统,其启动方法是从/etc/rc.d目录之一调用mysql.server脚本,则在数据库启动前检查表的过程比较复 杂,因为这些
9、目录中的脚本必须理解start和stop参数。例如,象这样编写脚本,取名mysql.check当参数时start时调用 check_tables,当参数是stop时什么也不做:#!/bin/sh#See hou we sere calledcase “$1” instart)echo n “Checking MySQL tables:”if -x /usr/local/mysql/bin/check_tables ; then/usr/local/mysql/bin/ check_tablesfi;stop)#dont do anything;*)echo “Usage:$ostart|stop”exit 1esacexit 0现 在你可以安装mysql.check了,该过程类似乎在第二章介绍的让服务器自动启动的安装mysql.server的过程。必须给 mysql.check一个运行级目录中较低的前缀号,才能使它在mysql.serv
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年安全生产月火灾事故应急演练方案(附签到表、效果评价表、演练总结)
- 2026年森林草原防火应急题库及答案
- 天然药物研发规范声明书4篇
- 产品质量安全无小事责任担当承诺书8篇
- 安全生产检查表及整改模板
- 钢铁大棚施工方案(3篇)
- 近日生日活动策划方案(3篇)
- 营销活动晚会策划方案(3篇)
- 水果简单活动策划方案(3篇)
- 2026校招:山东科达集团笔试题及答案
- 2026广东云浮市新兴县林业局招聘1人笔试备考试题及答案解析
- 2026春道德与法治二年级下册《身心健康很重要》教学设计
- 平行线的判定课件2025-2026学年人教版数学七年级下册
- 2026年春季学期校园“1530”安全教育记录表
- 人教版小学一年级语文下册单元测试卷全套
- 第二章空调负荷计算与送风量
- 船坞工程廊道施工方案
- 建筑材料-混凝土介绍ppt
- GB/T 4745-2012纺织品防水性能的检测和评价沾水法
- GB/T 11263-1998热轧H型钢和剖分T型钢
- 03【教案】 项目三 数控编程基础知识
评论
0/150
提交评论