4.6.3 myisamchk - MyISAM Table-Maintenance Utility

myisamchk实用程序获取有关数据库表的信息,或检查,修复或优化它们。 myisamchk适用于MyISAM表(具有.MYD.MYI files 的表用于存储数据和索引)。

您还可以使用检查 TABLE维修表 statements 来检查和修复MyISAM表。见第 13.7.2.2 节,“检查 TABLE 语法”第 13.7.2.5 节,“REPAIR TABLE 语法”

不支持将myisamchk与分区表一起使用。

警告

在执行 table 修复操作之前,最好备份 table;在某些情况下,操作可能会导致数据丢失。可能的原因包括但不限于文件系统错误。

像这样调用myisamchk

shell> myisamchk [options] tbl_name ...

options指定了myisamchk要做的事情。它们将在以下部分中介绍。您还可以通过调用myisamchk --help来获取选项列表。

如果没有选项,myisamchk只会将您的 table 检查为默认操作。要获取更多信息或告诉myisamchk采取纠正措施,请按照以下讨论中的说明指定选项。

tbl_name是您要检查或修复的数据库 table。如果 run myisamchk在数据库目录以外的某处,则必须指定数据库目录的路径,因为myisamchk没有数据库所在的 idea。实际上,myisamchk实际上并不关心您正在处理的 files 是否位于数据库目录中。您可以将与数据库 table 对应的 files 复制到其他位置,并在那里对它们执行恢复操作。

如果愿意,可以在myisamchk命令 line 上 name 几个表。您还可以通过命名其索引文件(具有.MYI后缀的文件)来指定 table。这使您可以使用 pattern *.MYI指定目录中的所有表。例如,如果您在数据库目录中,则可以检查该目录中的所有MyISAM表,如下所示:

shell> myisamchk *.MYI

如果您不在数据库目录中,则可以通过指定目录的路径来检查那里的所有表:

shell> myisamchk /path/to/database_dir/*.MYI

您甚至可以通过指定带有 MySQL 数据目录路径的通配符来检查所有数据库中的所有表:

shell> myisamchk /path/to/datadir/*/*.MYI

快速检查所有MyISAM表的推荐方法是:

shell> myisamchk --silent --fast /path/to/datadir/*/*.MYI

如果要检查所有MyISAM表并修复任何已损坏的表,可以使用以下命令:

shell> myisamchk --silent --force --fast --update-state \
          --key_buffer_size=64M --myisam_sort_buffer_size=64M \
          --read_buffer_size=1M --write_buffer_size=1M \
          /path/to/datadir/*/*.MYI

此命令假定您有超过 64MB 的可用空间。有关使用myisamchk进行 memory 分配的详细信息,请参阅第 4.6.3.6 节,“myisamchk Memory Usage”

有关使用myisamchk的其他信息,请参阅第 7.6 节,“MyISAM Table 维护和崩溃恢复”

重要
在_运行myisamchk时,必须确保没有其他程序正在使用这些表。这样做的最有效方法是在 running myisamchk时关闭 MySQL 服务器,或者锁定所有正在使用myisamchk的表。

否则,当您 run myisamchk时,它可能会显示以下错误消息:

warning: clients are using or haven't closed the table properly

这意味着您正在尝试检查已由另一个程序(例如mysqld服务器)更新的 table,该程序尚未关闭文件或已经在没有正确关闭文件的情况下死亡,这有时会导致损坏一个或多个MyISAM表。

如果mysqld是 running,则必须强制它使用FLUSH TABLES刷新仍在 memory 中缓冲的任何 table 修改。然后,您应该确保在_运行myisamchk时没有人正在使用这些表

但是,避免此问题的最简单方法是使用检查 TABLE而不是myisamchk来检查表。见第 13.7.2.2 节,“检查 TABLE 语法”
myisamchk支持以下选项,可以在命令 line 或选项文件的[myisamchk] group 中指定。有关 MySQL 程序使用的选项 files 的信息,请参阅第 4.2.2.2 节,“使用选项文件”

表 4.20 myisamchk 选项

选项 Name描述
--analyze分析 key 值的分布
--backup将.MYD 文件备份为 filename-time.BAK
--block-search找到给定偏移处的块所属的 record
--check检查 table 是否有错误
--check-only-changed仅检查自上次检查后已更改的表
--correct-checksum更正 table 的校验和信息
--data-file-length数据文件的最大长度(当 re-creating 数据文件已满时)
--debug写调试 log
--decode_bitsDecode_bits
--defaults-extra-file除了通常的选项 files 之外,还可以读取命名选项文件
--defaults-file只读命名选项文件
--defaults-group-suffix选项 group 后缀 value
--description打印有关 table 的一些描述性信息
--extend-check进行非常彻底的 table 检查或修复,尝试从数据文件中恢复每个可能的行
--fast仅检查未正确关闭的表
--force如果 myisamchk 在 table 中发现任何错误,请自动执行修复操作
--force覆盖旧的临时 files。用于-r 或-o 选项
--ft_max_word_lenFULLTEXT 索引的最大字长
--ft_min_word_lenFULLTEXT 索引的最小字长
--ft_stopword_file使用此文件中的停用词而不是 built-in 列表
--HELP显示帮助消息并退出
--help显示帮助消息并退出
--information打印有关已检查的 table 的信息统计信息
--key_buffer_size用于 MyISAM 表的索引块的缓冲区大小
--keys-used一个 bit-value,指示要更新的索引
--max-record-length如果 myisamchk 无法分配 memory 来保存它们,则跳过大于给定长度的行
--medium-check执行比--extend-check 操作更快的检查
--myisam_block_size用于 MyISAM 索引页的块大小
--myisam_sort_buffer_size在执行 REPAIR 时或在使用 CREATE INDEX 或 ALTER TABLE 创建索引时对索引进行排序时分配的缓冲区
--no-defaults不读选项 files
--parallel-recover使用与-r 和-n 相同的技术,但使用不同的线程(beta)在 parallel 中创建所有键
--print-defaults打印默认选项
--quick通过不修改数据文件实现更快的修复。
--read_buffer_size执行顺序扫描的每个线程为其扫描的每个 table 分配一个此大小的缓冲区
--read-only不要将 table 标记为已选中
--recover做一个可以解决几乎任何问题的修复,除了非唯一的唯一键
--safe-recover使用旧的恢复方法进行修复,该方法读取 order 中的所有行,并根据找到的行更新所有索引树
--set-auto-increment强制编号为新记录从给定的 value 开始
--set-collation指定用于排序 table 索引的排序规则
--silent静音模式
--sort_buffer_size在执行 REPAIR 时或在使用 CREATE INDEX 或 ALTER TABLE 创建索引时对索引进行排序时分配的缓冲区
--sort-index在 high-low order 中对索引树块进行排序
--sortkey_blockssortkey_blocks
--sort-records根据特定索引对记录进行排序
--sort-recover强制 myisamchk 使用排序来解析密钥,即使临时 files 非常大
--stats_method指定 MyISAM 索引统计信息收集 code 应如何处理 NULL
--tmpdir用于存储临时 files 的目录
--unpack打开包含 myisampack 的 table 包装
--update-state存储.MYI 文件中的信息,以指示何时检查 table 以及 table 是否崩溃
--verbose详细模式
--version显示 version 信息并退出
--write_buffer_size写缓冲区大小
Updated at: 7 months ago
myisam_ftdump - 显示 Full-Text 索引信息Table of contentmyisamchk 一般选项