建立MySQL数据库日常维护规范

相关文章:

如何进行MySQL数据库表的故障检测

如何修复MySQL数据库表

如何对MySQL数据库表进行锁定

如何对MySQL数据库日志文件进行维护

建立一个数据库表维护规范

在一个定期基础而非等到问题出现才实施数据库表的检查是一个好主意。应该考虑到建立一个预防性维护的时间表,以协助自动问题,是你可以采取措施进行修正:

执行常规的数据库备份并允许更新日志。

安排定期的常规表检查。通过检查表,将减少使用备份的机会。这个工作,在Windows下使用计划任务,Unix使用cron作业(一般从运行服务器所示用的该帐号的crontab文件中调用),并且很容易实现。

例如,你作为mysql用户运行服务器,则可以从mysql的crontab文件中建立定期检查。如果你不知道如何使用cron,应使用下列命令查看相关的Unix手册页:

$man cron
$man crontab

作为服务器启动前的系统引导期间检查数据库表。及其可能会因早期的崩溃而重新启动。如果这样的花,数据库表可能已被毁坏,应该对它进行彻底检查。

创建一个适用于定期维护的脚本

为了运行自动的表检查,可以编写一个脚本,将目录改变为服务器数据目录并对所有的数据库表进行myisamchk和isamchk。如果你只有MyISAM表或者只有ISAM表,则只需要其中一个程序,可以将无关的那个程序从脚本中注释掉。

该教本可以被cron调用,或者在系统启动期间被调用。

为维护目的,你能使用myisamchk -s检查桌子。-s,–silent选项使myisamchk和isamchk以沉默模式运行,只有当错误出现时,才仅仅打印消息。另外myisamchk支持–fast选项,该选项允许程序跳过自上次检查以来没有被修改过的人和表。

1. 一个简单的脚本

例如,一个较为容易理解的简单脚本,它在服务器目录中检查所有表(DATADIR应该修改成对应你系统的合适的值):

#!/bin/sh
cd DATADIR
myisamchk  --silent  --fast  */*.MYI
isamchk  --silent  */*.ISM

2. 一个较为复杂的脚本

实用此脚本的一个潜在的问题时:如果有许多表,通配符模式‘*/*.MYI’和‘*/*.ISM’可能会由于“too many arguments(参数过多)”或者命令行超过shell允许的长度而无法使用。脚本可以进一步修改为(同样,DATADIR修改为适合你系统上的值):

#!/bin/sh
datadir=DATADIR
find $dtatdir –name “*. MYI” -print | xargs myisamchk  --silent  --fast
find $dtatdir –name “*. ISM” -print | xargs isamchk  --silent

当然你也可以在脚本中指定多个数据库目录。

3. 如何执行脚本

假定你将脚本存为check_tables,应该确保它是可执行的,当然建议你首先切换到专用户mysql:

$su mysql
$vi check_tables(编辑脚本,你也可以使用你喜欢的编辑器)
$chmod +x check_tables

手工执行,检测你的脚本是否有错误:

$check_tables

在理想情况下应该没有输出结果。如果系统不支持外部锁定,游客蒽那个服务器将在你检查表时改变它。此时,脚本可能会把实际没有问题的表报告呈有问题的。如果系统能够支持外部锁定,则该问题就不会出现。

#p#

在unix中用cron定期检查表

以下将说明如何建立脚本,使它通过cron并在系统启动期间执行。在这小节的例子中,笔者假定把脚本安装在/usr/local/mysql/bin中,你需要修改该过程来检查每个服务器数据目录中的表。你可以使用不同的check_tables拷贝来进行,或者通过修改它来接受一个命令行参数进行,该参数指定了想要检查的数据目录。

假定对mysql用户从crontab文件中调用脚本check_tables。

1. 首先用该用户的身份注册

$su mysql

2. 生成一个临时文件,捕获已经调度的任务

$crontab –l>/tmp/entries

3. 在生成的文件最后一行添加内容

把这一行0 0 * * 0  /usr/local/mysql/bin/check_tables加到临时文件的最后一行:

$echo  “0  0  *  *  0  /usr/local/mysql/bin/check_tables” >>/tmp/entries

它告诉cron在每个星期日的凌晨0时运行此选项。可以按要求改变时间或安排。有关这些选项的格式,参阅crontab的手册页。

4. 重新安排调度

$crontab /tmp/entries

如果检查后有任何信息,cron作业通常生成一个邮件消息给用户。由于使用–silent选项,只有表存在错误时,才会有输出,也才会有邮件信息,因此不会产生大量无用邮件信息。(你现在应该明白,脚本采用–silent选项的原因)

对于这样定期的维护,你的服务器最好支持外部锁定,这样在检查表时,就不会发生访问冲突的情况。如果无法做到这一点,你最好在没有用户使用服务器的时候维护,例如凌晨。

在系统启动期间检查表

如果你使用的是BSD风格的系统,例如OpenBSD,FreeBSD等,并且已经将服务器的启动命令增加到/etc/rc.local,要在启动期间检查表,可以在启动服务器前从相应的文件中调用check_tables。

如果对于使用Sytem V风格的启动方法的系统,例如,大多数的商业Unix系统,其启动方法是从/etc/rc.d目录之一调用mysql.server脚本,则在数据库启动前检查表的过程比较复杂,因为这些目录中的脚本必须理解start和stop参数。

例如,象这样编写脚本,取名mysql.check当参数时start时调用check_tables,当参数是stop时什么也不做:

#!/bin/sh
#See hou we sere called
case  “$1”  in
  start)
    echo –n “Checking MySQL tables:”
    if  [ -x /usr/local/mysql/bin/check_tables ] ; then
      /usr/local/mysql/bin/ check_tables
    fi
    ;;
  stop)
    #don’t do anything
    ;;
  *)
    echo “Usage:$o{start|stop}”
    exit 1
  esac
  exit 0

现在你可以安装mysql.check了,该过程类似乎在第二章介绍的让服务器自动启动的安装mysql.server的过程。必须给mysql.check一个运行级目录中较低的前缀号,才能使它在mysql.server前运行。例如,如果在运行级目录中以S99mysql.server连接到mysql.server,则应该以S98mysql.check链接到mysql.check。

由于Linux集中了BSD和Sytem V系统的优点,所以,上面两种方法完全适用于Linux。为了简便起见,一般使用第一个方法。

【编辑推荐】

  1. 如何进行MySQL数据库表的故障检测
  2. 如何对MySQL数据库表进行锁定
  3. 如何修复MySQL数据库表
  4. 如何对MySQL数据库日志文件进行维护
  5. 如何在.NET中使用MySQL数据库

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/249543.html<

(0)
管理的头像管理
上一篇2025-04-28 02:34
下一篇 2025-04-28 02:35

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注