该myisamchk的程序获取信息有关数据库表或检查,修理,或优化他们。 myisamchk适用于MyISAM
表格(具有 表格 .MYD
和.MYI
用于存储数据和索引的文件)。
您也可以使用CHECK TABLE
和REPAIR TABLE
语句来检查和修复MyISAM
表格。请参见 第13.7.3.2节“CHECK TABLE语法”和 第13.7.3.5节“REPAIR TABLE语法”。
不支持myisamchk与分区表 的使用。
在执行表格修复操作之前,最好先备份表格; 在某些情况下,操作可能会导致数据丢失。可能的原因包括但不限于文件系统错误。
像这样 调用myisamchk:
shell> myisamchk [options] tbl_name ...
在options
你想要的指定 myisamchk的做。它们在以下各节中进行介绍。您也可以通过调用myisamchk --help来获得选项列表。
如果没有选项,myisamchk只会将您的表格视为默认操作。要获得更多信息或告诉myisamchk采取纠正措施,请按照以下讨论中的说明指定选项。
tbl_name
是要检查或修复的数据库表。如果您 在数据库目录以外的地方运行myisamchk,则必须指定数据库目录的路径,因为 myisamchk不知道数据库位于何处。事实上,myisamchk实际上并不关心你正在处理的文件是否位于数据库目录中。您可以将对应于数据库表的文件复制到其他位置,并在其中执行恢复操作。
如果你愿意, 你可以在myisamchk命令行上命名几个表。您还可以通过命名其索引文件(带有.MYI
后缀的文件)来指定一个表。这使您可以使用该模式指定目录中的所有表*.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分配内存的更多信息 ,请参见 第4.6.4.6节“myisamchk内存使用情况”。
有关使用myisamchk的更多信息 ,请参见 第7.6节“MyISAM表维护和故障恢复”。
在运行myisamchk时,您必须确保没有其他程序正在使用这些表 。这样做的最有效方法是在运行 myisamchk时关闭MySQL服务器,或者锁定 myisamchk正在使用的所有表。
否则,当您运行myisamchk时,它可能会显示以下错误消息:
warning: clients are using or haven't closed the table properly
这意味着您正在尝试检查已被另一程序(如mysqld服务器)更新的表,该表 尚未关闭文件,或者在没有正确关闭文件的情况下死亡,这有时会导致损坏一个或多个 MyISAM
表格。
如果mysqld正在运行,则必须强制使用它来刷新仍在内存中缓存的所有表修改FLUSH TABLES
。然后,您应确保在运行myisamchk时没有人使用这些表格
但是,避免此问题的最简单方法是使用 CHECK TABLE
而不是 myisamchk来检查表。请参见 第13.7.3.2节“CHECK TABLE语法”。
myisamchk支持以下选项,可以在命令行或 [myisamchk]
选项文件组中指定。有关MySQL程序使用的选项文件的信息,请参见 第4.2.6节“使用选项文件”。
本文由学什么技术好网翻译
表4.17 myisamchk选项
格式 | 描述 |
---|---|
- 分析 | 分析关键值的分布 |
--backup | 将.MYD文件备份为file_name-time.BAK |
--block搜索 | 查找给定偏移量处的块所属的记录 |
--check | 检查表中的错误 |
--check-唯一改变的 | 只检查自上次检查后更改的表格 |
--correct校验和 | 纠正表格的校验和信息 |
--data文件长度 | 数据文件的最大长度(当数据文件已满时重新创建数据文件时) |
--debug | 编写调试日志 |
--decode_bits | Decode_bits |
--defaults-额外文件 | 除了通常的选项文件外,还可以读取已命名的选项 |
--defaults文件 | 只读取命名的选项文件 |
--defaults基团的后缀 | 选项组后缀值 |
- 描述 | 打印一些关于表格的描述性信息 |
--extend检查 | 进行非常彻底的表检查或修复,试图从数据文件中恢复所有可能的行 |
- 快速 | 只检查没有正确关闭的表格 |
- 力 | 如果myisamchk在表中发现任何错误,请自动执行修复操作 |
- 力 | 覆盖旧的临时文件。用于-r或-o选项 |
--ft_max_word_len | FULLTEXT索引的最大字长 |
--ft_min_word_len | FULLTEXT索引的最小字长 |
--ft_stopword_file | 使用此文件中的停用词而不是内置列表 |
- 帮帮我 | 显示帮助信息并退出 |
- 帮帮我 | 显示帮助信息并退出 |
- 信息 | 打印有关检查表的信息统计信息 |
--key_buffer_size | 用于MyISAM表索引块的缓冲区大小 |
--keys使用的 | 指示要更新哪些索引的位值 |
--max记录长度 | 如果myisamchk无法分配内存来保存它们,则跳过大于给定长度的行 |
--medium检查 | 做一个比--extend-check操作更快的检查 |
--myisam_block_size | 块大小用于MyISAM索引页面 |
--myisam_sort_buffer_size | 在执行REPAIR或使用CREATE INDEX或ALTER TABLE创建索引时对索引进行排序时分配的缓冲区 |
--no-默认 | 不读取任何选项文件 |
--parallel-恢复 | 使用与-r和-n相同的技术,但使用不同的线程(测试版)并行创建所有键, |
--print-默认 | 打印默认选项 |
- 快 | 通过不修改数据文件实现更快的修复。 |
--read_buffer_size | 每个执行顺序扫描的线程都会为其扫描的每个表分配一个此大小的缓冲区 |
- 只读 | 不要将该表标记为已选中 |
- 恢复 | 做一个修复,可以解决几乎任何问题,除了唯一的唯一键 |
--safe-恢复 | 使用旧的恢复方法进行修复,该方法按顺序读取所有行,并根据找到的行更新所有索引树 |
--set-自动递增 | 对新记录强制AUTO_INCREMENT编号以给定值开始 |
--set-整理 | 指定用于排序表索引的排序规则 |
- 无声 | 静音模式 |
--sort_buffer_size | 在执行REPAIR或使用CREATE INDEX或ALTER TABLE创建索引时对索引进行排序时分配的缓冲区 |
--sort指数 | 按高低顺序对索引树块进行排序 |
--sort_key_blocks | sort_key_blocks |
--sort-记录 | 根据特定索引对记录进行排序 |
--sort-恢复 | 强制myisamchk使用排序来解决密钥,即使临时文件会非常大 |
--stats_method | 指定MyISAM索引统计信息收集代码应如何处理NULL |
--tmpdir | 用于存储临时文件的目录 |
--unpack | 打开装有myisampack的桌子 |
--update状态 | 将信息存储在.MYI文件中以指示何时检查表以及表是否崩溃 |
--verbose | 详细模式 |
- 版 | 显示版本信息并退出 |
--write_buffer_size | 写入缓冲区大小 |