设置MyISAM表维护计划
跳到导航
跳到搜索
定期进行表检查是一个好主意,而不是等待问题发生。检查和修复MyISAM表的一种方法是使用CHECK TABLE和REPAIR TABLE语句。
另一种检查表的方法是使用myisamchk。为了进行维护,你可以使用myisamchk -s命令。-s选项(代表--silent)使myisamchk在静默模式下运行,只在发生错误时打印消息。
启用自动的MyISAM表检查也是一个好主意。例如,每当机器在更新过程中重新启动时,通常需要在进一步使用之前检查可能受影响的每个表。这些是“预期崩溃的表”。要让服务器自动检查MyISAM表,请使用设置了myisam_recover_options系统变量的方式启动服务器。
在正常系统操作期间,你还应该定期检查表。例如,可以使用类似以下在crontab文件中的行来运行一个cron作业,每周检查一次重要的表:
35 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI
这将打印出有关崩溃表的信息,以便根据需要进行检查和修复。
一开始,在过去24小时内更新过的所有表上每晚执行myisamchk -s。随着你发现问题不经常发生,你可以将检查频率降低到每周一次或更少。
通常,MySQL表需要很少的维护。如果你对具有动态大小行的MyISAM表(具有VARCHAR、BLOB或TEXT列的表)进行了许多更新,或者有许多已删除行的表,你可能需要定期对这些表进行碎片整理/回收空间。你可以通过对相关表使用OPTIMIZE TABLE命令来实现这一点。或者,如果你可以暂停mysqld服务器一段时间,请进入数据目录并在服务器停止时使用以下命令:
$> myisamchk -r -s --sort-index --myisam_sort_buffer_size=16M */*.MYI