专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » mysql数据库服务器:预防性维护MySQL数据库服务器详解 »正文

mysql数据库服务器:预防性维护MySQL数据库服务器详解

来源: 发布时间:星期五, 2009年4月3日 浏览:0次 评论:0
="t18">建立个预防性维护时间表以协助自动检测问题使得您可以采取措施进行修正: 1) 执行常规数据库备份并允许更新日志 2) 安排定期常规表检查通过检查表将减少使用备份机会这个工作使用cron 作业(般从运行服务器所使用该账号crontab 文件中)并且很容易实现例如如果您作为mysqladm 用户运行服务器则可以从mysqladm crontab 文件中建立定期检查如果您不知道如何使用c r o n应使用下列命令查看相关UNIX 人工页:
% man cron % man crontab




3) 在服务器启动前系统引导期间检查数据库表机器可能会因早期崩溃重新启动如果是这样数据库表可能已被毁坏应该对它进行检查 为了运行自动表检查可以编写个脚本将目录改变为服务器数据目录并对所有数据库表运行myisamchk 和i s a m c h k我们将在下面讨论脚本中同时使用这两个如果您只有MyISAM 表或只有ISAM 表则只需其中可以将无关那个从脚本中去除 myisamchk 和isamchk 都根据表检查方式产生某些输出结果以便了解正在检查哪些表甚至在没有问题时也是如此对于crontab 除非表中有否则通常将禁止输出结果(如果作业产生任何输出 cron 作业通常生成个邮件消息很少会收到没有任何问题表检查作业邮件)如果用--silent 选项个实用它仅当发现问题时才产生输出另外myisamchk 支持--fast 选项该选项允许跳过自上次检查以来没有被修改过任何表 在服务器数据目录中检查所有表个简单脚本如下( DATADIR 应该修改成对应您系统值):
实用此脚本个潜在问题是:如果有许多表通配符模式‘ * / * . M Y I’或‘* / * . I S M’可能会由于“ too many arg um e n t s(过多参数)”使外壳爆炸个可选择脚本如下(同样将DATADIR 改变为对应您系统值):
不论您选择哪种形式脚本笔者都假定您是c h e c k _ mysql_ tables应确保及时改变该方式使它可执行然后您手工它以验证它工作是否正常:
% chmod +x check_mysql_tables % chmod_mysql_tables




在理想情况下应该没有输出结果如果系统不支持外部锁定有可能服务器将在您检查表时改变它此时脚本可能会把实际没问题表报告成有问题这有点不幸但比出现相反问题要好:当出现某些故障时脚本报告无问题如果系统支持外部锁定则该问题就不会出现 以下部分将介绍说明如何建立脚本使它通过cron 并在系统启动期间自动执行在这些小节例子中笔者假定脚本安装在/usr/users/mysaladm/bin 中您将需要调整适合自己系统 如果在您系统上运行了多个服务器将需要修改该过程来检查每个服务器数据目录中您可以使用区别check_mysql_tables 拷贝来进行或通过修改它来接收个命令行参数进行该参数指定了想要检查数据目录 用cron 定期检查表 假定要想对mysqladm 用户从crontab 文件中脚本c h e c k _ mysql_ tables先以该用户身份进行注册然后用下列命令编辑crontab 文件:
% crontab -e




该命令带您进入带有当前crontab 文件拷贝编辑器中(如果以前没有编辑过此文件可能是空)增加行到文件中:
0 3 * * 0 /usr/users/mysqladm/bin/check_mysql_tables




它告诉cron 在每个星期日上午3 时运行此选项可以按要求改变时间或安排有关这些选项格式请参阅crontab 人工页 在系统启动期间检查表 如果您正在使用BSD 风格系统并且已经将服务器启动命令增加到/etc/rc.local 或类似其他文件中则可以在启动服务器前从对应文件中c h e c k _ mysql_ tables 如果正在使用 V 风格启动思路方法从/etc/rc.d 目录的mysql. server则过程稍有点复杂这些目录中启动脚本应该理解start 和stop 参数含义以便对系统启动和关闭采取相应操作为了执行表检查我们可以编写这样脚本:当参数为start 时c h e c k _ mysql_ tables而当该参数为stop 时不做任何事情让我们来这样个脚本mysql. c h e c k其内容如下:
现在您已经可以使用个过程来安装mysql. c h e c k了该过程类似于在第11章所介绍安装mysql.server 过程必须给mysql.check 个运行级目录中较低前缀号才能使得它在mysql.server 前运行例如如果在运行级目录中以S99mysql.server 链接到mysql. server则应该以S98mysql.check 链接到mysql.check.

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: