myisamchk 支持以下选项来修复表操作(在给定选项如 --recover 或 --safe-recover 时):
-
--backup,-BCommand-Line Format --backup创建
.MYD文件的备份,命名为file_name-time.BAK -
Command-Line Format --character-sets-dir=pathType 字符串 Default Value [none]字符集安装的目录。见 第 12.15 节,“字符集配置”。
-
Command-Line Format --correct-checksum纠正表的 checksum 信息。
-
--data-file-length=,len-DlenCommand-Line Format --data-file-length=lenType 数字 数据文件的最大长度(当重新创建数据文件时,如果文件是“full”的话)。
-
--extend-check,-eCommand-Line Format --extend-check尝试从数据文件中恢复每一行数据。通常,这也会找到很多垃圾行。不要使用这个选项,除非你非常需要。
见 also 该选项在表检查选项下的描述。
关于输出格式的描述,见 第 6.6.4.5 节,“使用 myisamchk 获取表信息”。
-
--force,-fCommand-Line Format --force覆盖旧的中间文件(文件名类似
)而不是中止。tbl_name.TMD -
--keys-used=,val-kvalCommand-Line Format --keys-used=valType 数字 对于 myisamchk,该选项值是一个二进制值,指示哪些索引需要更新。每个二进制位对应一个表索引,其中第一个索引是位 0。选项值为 0 将禁用所有索引的更新,可以用于加速插入。禁用的索引可以使用 myisamchk -r重新激活。
-
Command-Line Format --max-record-length=lenType 数字 如果 myisamchk 无法分配足够的内存来存储它们,那么跳过长度大于给定长度的行。
-
--并行恢复,-pCommand-Line Format --并行恢复Note在 MySQL 8.0.28 中弃用,在 MySQL 8.0.30 中删除。
使用与
-r和-n相同的技术,但使用不同的线程创建所有键。 这是一份 beta 质量代码。请自行承担风险! -
--快速,-qCommand-Line Format --快速通过仅修改索引文件,而不是数据文件,来实现更快的修复。你可以指定这个选项两次,以强制 myisamchk 在出现重复键时修改原始数据文件。
-
--恢复,-rCommand-Line Format --恢复执行可以修复几乎所有问题的修复,除了唯一键不唯一(这是在
MyISAM表中非常不可能的错误)。如果你想恢复一个表,这是要尝试的第一个选项。你应该尝试--安全恢复只有当 myisamchk 报告表无法使用--恢复修复时。(在非常不可能的情况下,如果--恢复失败,数据文件将保持不变。)如果你有很多内存,你应该增加
myisam_sort_buffer_size的值。 -
--安全恢复,-oCommand-Line Format --安全恢复使用旧的恢复方法,读取所有行并更新所有索引树基于找到的行。这比
--恢复慢一个数量级,但可以处理--恢复无法处理的几个非常不可能的情况。此恢复方法也使用比--恢复少得多的磁盘空间。通常,你应该首先使用--恢复修复,然后使用--安全恢复只有当--恢复失败时。如果你有很多内存,你应该增加
key_buffer_size的值。 -
Command-Line Format --设置排序=nameType 字符串 指定用于排序表索引的排序规则。字符集名称由排序规则名称的第一部分隐含。
-
--排序恢复,-nCommand-Line Format --排序恢复强制 myisamchk 使用排序来解决键,即使临时文件将非常大。
-
--临时目录=,目录名称-t目录名称Command-Line Format --临时目录=dir_nameType 目录名称 用于存储临时文件的目录路径。如果未设置,则myisamchk 使用环境变量
TMPDIR的值。--tmpdir可以设置为目录路径列表,以便在创建临时文件时轮流使用。目录名之间的分隔符是 Unix 上的冒号 (:) 和 Windows 上的分号 (;)。 -
--unpack,-uCommand-Line Format --unpackunpack 使用 myisampack 打包的表。