MySQL 8.3 Release Notes
定期检查表格,而不是等待问题出现。检查和修复 MyISAM
表的一种方法是使用 CHECK TABLE
和 REPAIR TABLE
语句。见 第 15.7.3 节,“表维护语句”。
另一种检查表的方法是使用 myisamchk。对于维护目的,您可以使用 myisamchk -s。该 -s
选项(short for --silent
)使 myisamchk 在静默模式下运行,只在错误时打印消息。
另外,启用自动 MyISAM
表检查也是一个好主意。例如,在机器重新启动后,您通常需要检查每个可能受到影响的表格,然后才能继续使用它们。(这些是 “预期崩溃表。”)要使服务器自动检查 MyISAM
表,可以在启动服务器时设置 myisam_recover_options
系统变量。见 第 7.1.8 节,“服务器系统变量”。
您还应该在正常系统操作期间定期检查表格。例如,您可以在 crontab
文件中添加一行来每周检查重要表格:
35 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI
这将打印出崩溃表的信息,以便您可以检查和修复它们。
首先,执行 myisamchk -s 每晚在过去 24 小时内更新的所有表格上。随着您看到问题不频繁地出现,您可以将检查频率降低到每周一次左右。
通常,MySQL 表格需要很少的维护。如果您对 MyISAM
表进行了许多更新,特别是具有动态大小行的表格(具有 VARCHAR
、BLOB
或 TEXT
列)或具有许多已删除行的表格,您可能需要从时间到时间地碎片整理/回收表格空间。您可以使用 OPTIMIZE TABLE
在相关表格上执行此操作。或者,如果您可以停止 mysqld 服务器一段时间,切换到数据目录并使用以下命令:
$> myisamchk -r -s --sort-index --myisam_sort_buffer_size=16M */*.MYI