的mysqlcheck客户端进行表维护:检查、修理、优化或分析表。
每个表都是锁定的,因此当它被处理时,其他会话不可用,尽管对于检查操作,表被锁定读
锁只(见第13.3.6节,“LOCK TABLES和UNLOCK TABLES语句”,以了解更多有关读
而且写
锁)。表维护操作可能非常耗时,特别是对于大型表。如果你使用——数据库
或——所有数据库
选项,用于处理一个或多个数据库中的所有表mysqlcheck可能要花很长时间。(如果MySQL升级过程确定需要进行表检查,这也是正确的,因为它以同样的方式处理表。)
mysqlcheck一定要用的时候mysqld服务器正在运行,这意味着您不必停止服务器来执行表维护。
mysqlcheck使用SQL语句检查表
,修理表
,分析表
,优化表
以方便用户的方式。它确定您想要执行的操作使用哪些语句,然后将这些语句发送到要执行的服务器。关于每条语句对应的存储引擎,请参见第13.7.3节,“表维护报表”.
并非所有存储引擎都支持所有四种维护操作。在这种情况下,将显示错误消息。例如,如果test.t
是一个内存
表,尝试检查它会产生这样的结果:
Shell > mysqlcheck test t test。t注意:表的存储引擎不支持check
如果mysqlcheck是无法修理的表,看第2.11.13节,“重建或修复表或索引”用于手工表的维修策略。这是一个例子,例如InnoDB
表,可以用检查表
,但没有用修理表
.
在执行表修复操作之前,最好先对表进行备份;在某些情况下,该操作可能会导致数据丢失。可能原因包括但不限于文件系统错误。
有三种通用的调用方式mysqlcheck:
mysqlcheck [选项]db_name[tbl_name...]mysqlcheck [选项]——数据库db_name...mysqlcheck [选项),所有数据库
如果您没有命名下面的任何表db_name
或者如果你用——数据库
或——所有数据库
选项,检查整个数据库。
mysqlcheck与其他客户端程序相比有一个特殊的功能。检查表的默认行为(——检查
)可以通过重命名二进制文件来更改。如果你想有一个默认修复表的工具,你应该只做一个副本mysqlcheck命名mysqlrepair,或创建符号链接mysqlcheck命名mysqlrepair.如果您调用mysqlrepair,它修理桌子。
下表中显示的名称可以用于更改mysqlcheck默认的行为。
mysqlcheck支持以下选项,可以在命令行或在(mysqlcheck)
而且(客户端)
选项文件的组。有关MySQL程序使用的选项文件的信息,请参见第4.2.2.2节,“使用选项文件”.
表4.13 mysqlcheck选项
选项名称 | 描述 | 介绍了 | 弃用 |
---|---|---|---|
——所有数据库 | 检查所有数据库中的所有表 | ||
——all-in-1 | 为每个数据库执行一条命名该数据库中所有表的语句 | ||
——分析 | 分析表 | ||
——自我修护 | 如果检查的表损坏了,自动修复它 | ||
——bind-address | 使用指定的网络接口连接MySQL服务器 | ||
——character-sets-dir | 字符集安装的目录 | ||
——检查 | 检查表格是否有错误 | ||
——check-only-changed | 只检查自上次检查以来已更改的表 | ||
——check-upgrade | 使用forupgrade选项调用CHECK TABLE | ||
——压缩 | 压缩客户端和服务器之间发送的所有信息 | 8.0.18 | |
——压缩算法 | 允许连接到服务器的压缩算法 | 8.0.18 | |
——数据库 | 将所有参数解释为数据库名称 | ||
——调试 | 编写调试日志 | ||
——debug-check | 当程序退出时打印调试信息 | ||
——debug-info | 当程序退出时,打印调试信息、内存和CPU统计信息 | ||
——default-auth | 要使用的认证插件 | ||
——default-character-set | 指定默认字符集 | ||
——defaults-extra-file | 除了通常的选项文件外,读取命名的选项文件 | ||
——defaults-file | 只读命名选项文件 | ||
——defaults-group-suffix | 选项组后缀值 | ||
——enable-cleartext-plugin | 启用明文认证插件 | ||
——扩展 | 检修表 | ||
——快 | 只检查没有正确关闭的桌子 | ||
——力 | 即使发生SQL错误,也要继续 | ||
——get-server-public-key | 向服务器请求RSA公钥 | ||
——帮助 | 显示帮助信息并退出 | ||
——主机 | MySQL服务器所在的主机 | ||
——登录路径 | 从.mylogin.cnf读取登录路径选项 | ||
——medium-check | 做一个比扩展操作更快的检查 | ||
——已 | 读取无选项文件 | ||
——优化 | 优化表 | ||
——密码 | 连接到服务器时使用的密码 | ||
——管 | 使用命名管道连接到服务器(仅针对Windows) | ||
——plugin-dir | 安装插件的目录 | ||
——港口 | 连接的TCP/IP端口号 | ||
——print-defaults | 打印默认选项 | ||
——协议 | 要使用的传输协议 | ||
——快速 | 最快的检查方法 | ||
——修复 | 执行一个几乎可以修复任何东西的修复,除了不唯一的唯一键 | ||
——server-public-key-path | 包含RSA公钥文件的路径名称 | ||
——shared-memory-base-name | 用于共享内存连接的共享内存名称(仅限Windows) | ||
——沉默 | 静默模式 | ||
——skip-database | 从执行的操作中忽略此数据库 | ||
——套接字 | Unix套接字文件或Windows命名管道使用 | ||
——ssl-ca | 包含受信任的SSL证书颁发机构列表的文件 | ||
——ssl-capath | 包含受信任的SSL证书颁发机构证书文件的目录 | ||
——ssl-cert | 包含X.509证书的文件 | ||
——ssl cipher | 连接加密允许的密码 | ||
——ssl-crl | 包含证书撤销列表的文件 | ||
——ssl-crlpath | 包含证书撤销列表文件的目录 | ||
——ssl-fips-mode | 客户端是否启用FIPS模式 | ||
——ssl密钥 | 包含X.509密钥的文件 | ||
——ssl-mode | 连接到服务器的期望安全状态 | ||
——表 | 覆盖——databases或-B选项 | ||
——tls-ciphersuites | 允许用于加密连接的TLSv1.3加密套件 | 8.0.16 | |
——tls版本 | 允许加密连接使用TLS协议 | ||
——use-frm | 用于MyISAM表的修复操作 | ||
——用户 | 连接到服务器时使用的MySQL用户名 | ||
——详细 | 详细模式 | ||
——版本 | 显示版本信息并退出 | ||
——write-binlog | 日志分析,优化,修复语句到二进制日志。——skip-write-binlog向这些语句添加NO_WRITE_TO_BINLOG | ||
——zstd-compression-level | 连接到使用zstd压缩的服务器的压缩级别 | 8.0.18 |
——帮助
,-?
显示帮助信息并退出。
——所有数据库
,——一个
检查所有数据库中的所有表。这与使用
——数据库
选项并命名命令行上的所有数据库,除了INFORMATION_SCHEMA
而且performance_schema
不检查数据库。可以通过显式地将它们命名为——数据库
选择。——all-in-1
,-1
不是为每个表发出一条语句,而是为每个数据库执行一条语句,命名该数据库中要处理的所有表。
——分析
,——一个
分析表。
如果检查的表损坏了,自动修复它。所有的桌子都检查过之后再进行必要的维修。
在有多个网络接口的计算机上,使用这个选项来选择使用哪个接口连接到MySQL服务器。
——character-sets-dir =
dir_name
字符集安装的目录。看到第10.15节,"字符集配置".
——检查
,- c
检查表格是否有错误。这是默认操作。
只检查自上次检查以来已更改的表或未正确关闭的表。
——check-upgrade
,- g
调用
检查表
与为升级
选项检查表是否与服务器的当前版本不兼容。尽可能压缩客户端和服务器之间发送的所有信息。看到4.2.8节“连接压缩控制”.
从MySQL 8.0.18开始,该选项已被弃用。希望在MySQL的未来版本中删除它。看到配置遗留连接压缩.
连接到服务器所允许的压缩算法。所采用的算法与
protocol_compression_algorithms
系统变量。缺省值为未压缩的
.有关更多信息,请参见4.2.8节“连接压缩控制”.
这个选项是在MySQL 8.0.18中添加的。
——数据库
,- b
处理已命名数据库中的所有表。通常情况下,mysqlcheck将命令行上的第一个名称参数作为数据库名称,将后面的任何名称作为表名称。使用此选项,它将所有名称参数视为数据库名称。
——调试(=
,debug_options
]- # (
debug_options
]编写调试日志。一个典型的
debug_options
字符串是d:师:啊,
.默认值是file_name
d:师:o
.该选项仅在MySQL使用
WITH_DEBUG
.Oracle提供的MySQL发行版二进制文件是不使用此选项构建。当程序退出时,打印一些调试信息。
该选项仅在MySQL使用
WITH_DEBUG
.Oracle提供的MySQL发行版二进制文件是不使用此选项构建。当程序退出时,打印调试信息以及内存和CPU使用统计信息。
该选项仅在MySQL使用
WITH_DEBUG
.Oracle提供的MySQL发行版二进制文件是不使用此选项构建。——default-character-set =
charset_name
使用
charset_name
作为默认字符集。看到第10.15节,"字符集配置".——defaults-extra-file =
file_name
在全局选项文件之后读取该选项文件,(在Unix上)在用户选项文件之前读取该选项文件。如果文件不存在或无法访问,则会发生错误。如果
file_name
不是绝对路径名,它是相对于当前目录进行解释的。有关此选项和其他选项文件选项的其他信息,请参见4.2.2.3节,“影响选项文件处理的命令行选项”.
只使用给定的选项文件。如果文件不存在或无法访问,则会发生错误。如果
file_name
不是绝对路径名,它是相对于当前目录进行解释的。例外:即使
——defaults-file
,客户端程序读取.mylogin.cnf
.有关此选项和其他选项文件选项的其他信息,请参见4.2.2.3节,“影响选项文件处理的命令行选项”.
不仅读取常用选项组,还读取具有常用名称和后缀的组
str
.例如,mysqlcheck正常读取(客户端)
而且(mysqlcheck)
组。如果这个选项是——defaults-group-suffix = _other
,mysqlcheck还读(client_other)
而且(mysqlcheck_other)
组。有关此选项和其他选项文件选项的其他信息,请参见4.2.2.3节,“影响选项文件处理的命令行选项”.
——扩展
,- e
如果您使用这个选项来检查表,它可以确保它们是100%一致的,但需要很长时间。
如果您使用这个选项来修复表,它会运行一个扩展的修复,这个修复不仅需要很长时间来执行,而且还可能产生许多垃圾行!
关于使用哪个客户端身份验证插件的提示。看到第6.2.17节,“可插入身份验证”.
启用
mysql_clear_password
明文验证插件。(见第6.4.1.4节,“客户端明文可插拔身份验证”.)——快
,- f
只检查没有正确关闭的桌子。
——力
,- f
即使发生SQL错误,也要继续。
向服务器请求RSA密钥对密码交换所需的公钥。此选项适用于使用
caching_sha2_password
身份验证插件。对于该插件,服务器不会发送公钥,除非请求。对于没有使用该插件进行身份验证的帐户,将忽略此选项。如果不使用基于rsa的密码交换,就像客户机使用安全连接连接到服务器时的情况一样,也会忽略它。如果
——server-public-key-path =
并指定一个有效的公钥文件,则它优先于file_name
——get-server-public-key
.有关
caching_sha2_password
插件,看到第6.4.1.2节,“缓存SHA-2可插拔身份验证”.——主机=
,host_name
- h
host_name
连接到给定主机上的MySQL服务器。
中已命名的登录路径读取选项
.mylogin.cnf
登录路径文件。一个”登录路径”是一个选项组,包含指定要连接到哪个MySQL服务器以及验证为哪个帐户的选项。要创建或修改登录路径文件,请使用mysql_config_editor实用程序。看到第4.6.7节," mysql_config_editor - MySQL配置实用程序".有关此选项和其他选项文件选项的其他信息,请参见4.2.2.3节,“影响选项文件处理的命令行选项”.
——medium-check
,- m
做一个比a快的检查
——扩展
操作。这只能找到99.99%的错误,这在大多数情况下应该足够好了。不要读取任何选项文件。如果由于从选项文件读取未知选项而导致程序启动失败,
——已
可以用来防止它们被读取。唯一的例外是
.mylogin.cnf
如果文件存在,则在所有情况下读取它。这允许以比在命令行上更安全的方式指定密码,即使在——已
使用。创建.mylogin.cnf
,可以使用mysql_config_editor实用程序。看到第4.6.7节," mysql_config_editor - MySQL配置实用程序".有关此选项和其他选项文件选项的其他信息,请参见4.2.2.3节,“影响选项文件处理的命令行选项”.
——优化
,- o
优化表。
——密码(=
,密码
]- p (
密码
]连接服务器时使用的MySQL帐号密码。密码为可选值。如果不是,mysqlcheck提示。如果给予,就一定会有没有空间之间的
——密码=
或- p
还有后面的密码。如果不指定密码选项,则默认不发送密码。在命令行上指定密码应该被认为是不安全的。要避免在命令行上给出密码,请使用选项文件。看到第6.1.2.1节,“密码安全的最终用户指引”.
来明确地指定没有密码和mysqlcheck不应提示为一,使用
——skip-password
选择。——管
,- w
在Windows上,使用命名管道连接到服务器。此选项仅在服务器以
named_pipe
启用支持命名管道连接的系统变量。此外,进行连接的用户必须是指定的Windows组的成员named_pipe_full_access_group
系统变量。用于查找插件的目录。时指定此选项
——default-auth
选项用于指定身份验证插件,但是mysqlcheck没有找到。看到第6.2.17节,“可插入身份验证”.——港口=
,port_num
- p
port_num
对于TCP/IP连接,使用的端口号。
打印程序名称和它从选项文件中获得的所有选项。
有关此选项和其他选项文件选项的其他信息,请参见4.2.2.3节,“影响选项文件处理的命令行选项”.
用于连接到服务器的传输协议。当其他连接参数通常导致使用与您想要的协议不同的协议时,它很有用。允许值请参见第4.2.7节,“连接传输协议”.
——快速
,q
如果使用此选项检查表,则可以防止检查通过扫描行来检查不正确的链接。这是最快的检查方法。
如果使用此选项修复表,则它只会尝试修复索引树。这是最快的修复方法。
——修复
,- r
执行一个几乎可以修复任何东西的修复,除了不唯一的唯一键。
——server-public-key-path =
file_name
PEM格式文件的路径名称,文件中包含服务器通过RSA密钥对交换密码所需的公钥的客户端副本。此选项适用于使用
sha256_password
或caching_sha2_password
身份验证插件。对于没有使用这些插件之一进行身份验证的帐户,将忽略此选项。如果不使用基于rsa的密码交换,就像客户机使用安全连接连接到服务器时的情况一样,也会忽略它。如果
——server-public-key-path =
并指定一个有效的公钥文件,则它优先于file_name
——get-server-public-key
.为
sha256_password
,此选项仅适用于使用OpenSSL构建MySQL的情况。有关
sha256_password
而且caching_sha2_password
插件,看到第6.4.1.3节,“SHA-256可插拔认证”,第6.4.1.2节,“缓存SHA-2可插拔身份验证”.——shared-memory-base-name =
的名字
在Windows上,用于使用共享内存连接到本地服务器的共享内存名称。缺省值为
MYSQL
.共享内存名称区分大小写。此选项仅在服务器以
shared_memory
启用支持共享内存连接的系统变量。——沉默
,- s
无声模式。只打印错误消息。
在执行的操作中不包括命名数据库(区分大小写)mysqlcheck.
——套接字=
,路径
- s
路径
为连接
本地主机
,要使用的Unix套接字文件,或者,在Windows上,要使用的命名管道的名称。在Windows上,此选项仅在服务器以
named_pipe
启用支持命名管道连接的系统变量。此外,进行连接的用户必须是指定的Windows组的成员named_pipe_full_access_group
系统变量。选项开始于
——ssl
指定是否使用加密连接到服务器,并指明在何处查找SSL密钥和证书。看到加密连接的命令选项.控制是否在客户端启用FIPS模式。的
——ssl-fips-mode
选项不同于其他选项——ssl
选项,它不用于建立加密连接,而是影响允许哪些加密操作。看到第6.8节,“FIPS支持”.xxx
这些
——ssl-fips-mode
值是允许的:从
:关闭FIPS模式。在
:启用FIPS模式。严格的
:使”严格的”FIPS模式。
请注意如果OpenSSL FIPS对象模块不可用,惟一允许的值为
——ssl-fips-mode
是从
.在这种情况下,设置——ssl-fips-mode
来在
或严格的
导致客户机在启动时产生警告,并以非fips模式运行。覆盖
——数据库
或- b
选择。选项后面的所有名称参数都被视为表名。——tls-ciphersuites =
ciphersuite_list
对于使用TLSv1.3的加密连接,允许的密码套件。该值是一个或多个冒号分隔的密码套件名称的列表。可为此选项命名的密码套件取决于用于编译MySQL的SSL库。有关详细信息,请参见第6.3.2节,“加密连接TLS协议和密码”.
这个选项是在MySQL 8.0.16中添加的。
加密连接允许的TLS协议。一个或多个以逗号分隔的协议名称的列表。可以为该选项命名的协议依赖于用于编译MySQL的SSL库。有关详细信息,请参见第6.3.2节,“加密连接TLS协议和密码”.
用于维修
MyISAM
表,从数据字典中获取表结构,以便表可以修复,即使.MYI
头损坏。——用户=
,user_name
- u
user_name
连接服务器时使用的MySQL帐号的用户名。
——详细
,- v
详细的模式。打印程序运行的各个阶段的信息。
——版本
,- v
显示版本信息并退出。
这个选项默认是启用的,因此
分析表
,优化表
,修理表
生成的报表mysqlcheck写入二进制日志。使用——skip-write-binlog
导致NO_WRITE_TO_BINLOG
添加到语句中,以使它们不被记录。使用——skip-write-binlog
当这些语句不应该被发送到副本或在使用二进制日志从备份恢复时运行时。控件连接到服务器时使用的压缩级别
zstd
压缩算法。允许的级别从1到22,较大的值表示压缩级别的增加。默认的zstd
压缩级别为3。压缩级别设置对不使用的连接没有影响zstd
压缩。有关更多信息,请参见4.2.8节“连接压缩控制”.
这个选项是在MySQL 8.0.18中添加的。