Documentation Home
MySQL 8.0 参考手册  / 第 4 章 MySQL 程序  / 4.5 客户端程序  /  4.5.3 mysqlcheck——表维护程序

4.5.3 mysqlcheck——表维护程序

mysqlcheck客户端执行表维护:它检查、修复、优化或分析表。

每个表都被锁定,因此在处理时对其他会话不可用,尽管对于检查操作,表仅被READ锁锁定(请参阅 第 13.3.5 节,“LOCK TABLES 和 UNLOCK TABLES 语句”,了解更多信息 READWRITE锁)。表维护操作可能很耗时,尤其是对于大型表。如果您使用 --databasesor --all-databases选项来处理一个或多个数据库中的所有表,则调用 mysqlcheck可能需要很长时间。(对于 MySQL 升级过程也是如此,如果它确定需要进行表检查,因为它以相同的方式处理表。)

mysqld服务器运行时必须使用 mysqlcheck,这意味着您不必停止服务器来执行表维护。

mysqlcheck以方便用户的方式使用 SQL 语句 CHECK TABLE, REPAIR TABLE, ANALYZE TABLE, 和 OPTIMIZE TABLE它确定要执行的操作要使用哪些语句,然后将语句发送到要执行的服务器。有关每个语句使用哪些存储引擎的详细信息,请参阅 第 13.7.2 节,“表维护语句”

所有的存储引擎都不一定支持所有四种维护操作。在这种情况下,会显示一条错误消息。例如,如果test.t是一个 MEMORY表,尝试检查它会产生以下结果:

$> mysqlcheck test t
test.t
note     : The storage engine for the table doesn't support check

如果mysqlcheck无法修复表,请参阅第 2.11.12 节,“重建或修复表或索引”以了解手动表修复策略。例如,对于 InnoDB可以使用 进行检查 CHECK TABLE但不能使用 进行修复的表,情况就是如此REPAIR TABLE

警告

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

调用mysqlcheck 的一般方法有以下三种 :

mysqlcheck [options] db_name [tbl_name ...]
mysqlcheck [options] --databases db_name ...
mysqlcheck [options] --all-databases

如果您没有在后面命名任何表, db_name或者如果您使用 --databases--all-databases选项,则会检查整个数据库。

与其他客户端程序相比, mysqlcheck有一个特殊的功能。检查表 (--check) 的默认行为可以通过重命名二进制文件来更改。如果你想要一个默认修复表的工具,你应该只制作一个 名为 mysqlrepair的mysqlcheck的副本,或者创建一个名为 mysqlrepair的mysqlcheck的符号链接 。如果您调用 mysqlrepair,它会修复表。

下表中显示的名称可用于更改 mysqlcheck默认行为。

命令 意义
mysql修复 默认选项是--repair
mysql分析 默认选项是--analyze
mysql优化 默认选项是--optimize

mysqlcheck支持以下选项,可以在命令行或 选项文件的组中指定[mysqlcheck][client]有关 MySQL 程序使用的选项文件的信息,请参阅第 4.2.2.2 节,“使用选项文件”

表 4.14 mysqlcheck 选项

选项名称 描述 介绍 弃用
--所有数据库 检查所有数据库中的所有表
--多合一 为每个数据库执行一条语句,命名该数据库中的所有表
- 分析 分析表
- 自动修理 如果已检查的表已损坏,则自动修复它
--绑定地址 使用指定的网络接口连接到 MySQL 服务器
--字符集目录 安装字符集的目录
- 查看 检查表格是否有错误
--check-only-changed 仅检查自上次检查以来更改过的表
--检查升级 使用 FOR UPGRADE 选项调用 CHECK TABLE
- 压缩 压缩客户端和服务器之间发送的所有信息
--数据库 将所有参数解释为数据库名称
--调试 写调试日志
--调试检查 程序退出时打印调试信息
- 调试信息 程序退出时打印调试信息、内存和 CPU 统计信息
--default-auth 要使用的身份验证插件
--默认字符集 指定默认字符集
--defaults-extra-file 除了通常的选项文件外,还读取命名的选项文件
--defaults-文件 只读命名选项文件
--defaults-group-suffix 选项组后缀值
--启用明文插件 启用明文身份验证插件 5.7.10
--扩展 检查和修理桌子
- 快速地 只检查没有正确关闭的表
--修复数据库名称 将数据库名称转换为 5.1 格式 是的
--修复表名 将表名转换为 5.1 格式 是的
- 力量 即使出现 SQL 错误也继续
--get-server-public-key 从服务器请求 RSA 公钥 5.7.23
- 帮助 显示帮助信息并退出
- 主持人 MySQL 服务器所在的主机
--登录路径 从 .mylogin.cnf 读取登录路径选项
--medium-check 执行比 --extended 操作更快的检查
--no-defaults 不读取选项文件
--优化 优化表
- 密码 连接到服务器时使用的密码
- 管道 使用命名管道连接到服务器(仅限 Windows)
--插件目录 安装插件的目录
- 港口 用于连接的 TCP/IP 端口号
--print-defaults 打印默认选项
- 协议 使用的传输协议
- 快的 最快的检查方法
- 修理 执行修复几乎可以修复任何东西,除了不唯一的唯一键
--secure-auth 不要以旧的(pre-4.1)格式向服务器发送密码 是的
--server-public-key-path 包含 RSA 公钥的文件的路径名 5.7.23
--shared-memory-base-name 共享内存连接的共享内存名称(仅限 Windows)
- 沉默的 静音模式
--跳过数据库 从执行的操作中省略此数据库
- 插座 要使用的 Unix 套接字文件或 Windows 命名管道
--ssl 启用连接加密
--ssl-ca 包含可信 SSL 证书颁发机构列表的文件
--ssl-capath 包含受信任的 SSL 证书颁发机构证书文件的目录
--ssl证书 包含 X.509 证书的文件
--ssl密码 连接加密的允许密码
--ssl-crl 包含证书吊销列表的文件
--ssl-crlpath 包含证书吊销列表文件的目录
--ssl-密钥 包含 X.509 密钥的文件
--ssl模式 连接到服务器的所需安全状态 5.7.11
--ssl-verify-server-cert 根据服务器证书公用名身份验证主机名
--表格 覆盖 --databases 或 -B 选项
--tls-版本 加密连接允许的 TLS 协议 5.7.10
--use-frm 用于 MyISAM 表的修复操作
- 用户 连接到服务器时使用的 MySQL 用户名
--冗长 详细模式
- 版本 显示版本信息并退出
--write-binlog 将 ANALYZE、OPTIMIZE、REPAIR 语句记录到二进制日志中。--skip-write-binlog 将 NO_WRITE_TO_BINLOG 添加到这些语句中