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