MySQL 9.0 发行说明
定期执行表检查而不是等到问题发生是一个好主意。检查和修复 MyISAM
表的一种方法是使用 CHECK TABLE
和 REPAIR TABLE
语句。参见 第 15.7.3 节,“表维护语句”。
检查表的另一种方法是使用 myisamchk。为了维护目的,您可以使用 myisamchk -s。 -s
选项(代表 --silent
)会导致 myisamchk 以静默模式运行,仅在发生错误时打印消息。
启用自动 MyISAM
表检查也是一个好主意。例如,每当机器在更新过程中重启时,您通常需要在进一步使用之前检查每个可能受影响的表。(这些是 “预期崩溃的表。”)要让服务器自动检查 MyISAM
表,请使用 myisam_recover_options
系统变量设置启动它。参见 第 7.1.8 节,“服务器系统变量”。
您还应该在正常系统运行期间定期检查您的表。例如,您可以运行一个 cron 作业,每周检查一次重要的表,在 crontab
文件中使用类似于这样的行
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