所有存储引擎不一定支持全部四个维护操作。在这种情况下,会显示错误消息。例如,如果test.t是 MEMORY表,尝试检查它会产生以下结果:
shell> mysqlcheck test t
test.t
note : The storage engine for the table doesn't support check
如果mysqlcheck无法修复表,请参见第2.10.3节“重建或修复表或索引”以了解手动表修复策略。例如,对于 InnoDB可以检查CHECK TABLE但不能修复的表格就是这种情况 REPAIR TABLE.
警告在执行表格修复操作之前,最好先备份表格; 在某些情况下,操作可能会导致数据丢失。可能的原因包括但不限于文件系统错误。
有三种通用的方法可以调用 mysqlcheck:
shell> mysqlcheck [options] db_name [tbl_name ...]
shell> mysqlcheck [options] --databases db_name ...
shell> mysqlcheck [options] --all-databases
如果您未命名任何表格 db_name
或者使用 --databases
or --all-databases
选项,则会检查整个数据库。
与其他客户端程序相比, mysqlcheck具有特殊功能。检查tables(--check
)的默认行为可以通过重命名二进制文件来改变。如果你想有一个工具,修复表默认情况下,你应该做的副本 mysqlcheck的命名 mysqlrepair,可,或者做一个符号链接 mysqlcheck的命名 mysqlrepair,可。如果你调用 mysqlrepair,它会修复表。
下表中显示的名称可用于更改 mysqlcheck的默认行为。
命令 | 含义 |
---|---|
mysqlrepair,可 | 默认选项是 --repair |
mysqlanalyze | 默认选项是 --analyze |
mysqloptimize | 默认选项是 --optimize |
mysqlcheck的支持下面的选项,可以在命令行或在指定 [mysqlcheck]
与[client]
一个选项文件的组。有关MySQL程序使用的选项文件的信息,请参见第4.2.6节“使用选项文件”。
表4.10 mysqlcheck选项
格式 | 描述 | 介绍 | 删除 |
---|---|---|---|
- 全数据库 | 检查所有数据库中的所有表 | ||
--all合1 | 为每个数据库执行一条语句,该语句为该数据库中的所有表命名 | ||
- 分析 | 分析表格 | ||
- 自动修理 | 如果检查表损坏,自动修复它 | ||
--bind地址 | 使用指定的网络接口连接到MySQL服务器 | ||
--character集-DIR | 安装字符集的目录 | ||
--check | 检查表格是否有错误 | ||
--check-唯一改变的 | 只检查自上次检查后更改的表格 | ||
--check升级 | 用FOR UPGRADE选项调用CHECK TABLE | ||
- 压缩 | 压缩客户端和服务器之间发送的所有信息 | ||
--databases | 将所有参数解释为数据库名称 | ||
--debug | 编写调试日志 | ||
--debug检查 | 程序退出时打印调试信息 | ||
- 调试信息 | 打印程序退出时的调试信息,内存和CPU统计信息 | ||
--default-AUTH | 身份验证插件使用 | ||
--default-字符集 | 指定默认字符集 | ||
--defaults-额外文件 | 除了通常的选项文件外,还可以读取已命名的选项 | ||
--defaults文件 | 只读取命名的选项文件 | ||
--defaults基团的后缀 | 选项组后缀值 | ||
--enable-明文-插件 | 启用明文身份验证插件 | ||
--extended | 检查并修复表格 | ||
- 快速 | 只检查没有正确关闭的表格 | ||
- 力 | 即使发生SQL错误也继续 | ||
--get-服务器的公钥 | 从服务器请求RSA公钥 | 8.0.3 | |
- 帮帮我 | 显示帮助信息并退出 | ||
- 主办 | 连接到给定主机上的MySQL服务器 | ||
--login路径 | 阅读.mylogin.cnf中的登录路径选项 | ||
--medium检查 | 做一个比--extended操作快的检查 | ||
--no-默认 | 不读取任何选项文件 | ||
--optimize | 优化表格 | ||
- 密码 | 连接到服务器时使用的密码 | ||
- 管 | 在Windows上,使用命名管道连接到服务器 | ||
--plugin-DIR | 安装插件的目录 | ||
- 港口 | 用于连接的TCP / IP端口号 | ||
--print-默认 | 打印默认选项 | ||
- 协议 | 使用连接协议 | ||
- 快 | 最快的检查方法 | ||
- 修理 | 执行修复可以修复几乎除了唯一键的唯一键以外的任何内容 | ||
--secure-auth的 | 不要以旧(4.1以前)格式向服务器发送密码 | 8.0.3 | |
--server-公钥路径 | 包含RSA公钥的文件的路径名称 | 8.0.4 | |
--shared存储器碱基名 | 用于共享内存连接的共享内存的名称 | ||
- 无声 | 静音模式 | ||
--skip-数据库 | 从执行的操作中省略此数据库 | ||
- 插座 | 用于连接到localhost,要使用的Unix套接字文件 | ||
--ssl-CA | 包含可信SSL证书颁发机构列表的文件 | ||
--ssl-capath | 包含可信SSL证书颁发机构证书文件的目录 | ||
--ssl证书 | 包含X509证书的文件 | ||
--ssl-密码 | 允许连接加密的密码列表 | ||
--ssl-CRL | 包含证书吊销列表的文件 | ||
--ssl-crlpath | 包含证书撤销列表文件的目录 | ||
--ssl键 | 包含X509密钥的文件 | ||
--ssl模式 | 连接到服务器的安全状态 | ||
--tables | 覆盖--databases或-B选项 | ||
--tls版本 | 允许加密连接的协议 | ||
--use-FRM | 用于MyISAM表格的修复操作 | ||
- 用户 | 连接到服务器时使用的MySQL用户名 | ||
--verbose | 详细模式 | ||
- 版 | 显示版本信息并退出 | ||
--write,二进制日志 | 将ANAL ANALYZE,OPTIMIZE,REPAIR语句记录到二进制日志。--skip-write-binlog将NO_WRITE_TO_BINLOG添加到这些语句中。 |
--help
, -?
显示帮助信息并退出。
--all-databases
, -A
检查所有数据库中的所有表。这与--databases
在命令行中使用选项并命名所有数据库相同,只是未检查INFORMATION_SCHEMA
和 performace_schema
数据库。可以通过使用--databases
选项明确命名它们来检查它们。
--all-in-1
, -1
不是为每个表发布语句,而是为每个数据库执行一条语句,该语句将命名该数据库中的所有表以进行处理。
--analyze
, -a
分析表格。
--auto-repair
如果检查表损坏,自动修复它。所有必要的修理都在所有表格检查完成后完成。
--bind-address=
ip_address
在具有多个网络接口的计算机上,使用此选项选择用于连接到MySQL服务器的接口。
--character-sets-dir=
dir_name
安装字符集的目录。请参见 第10.14节“字符集配置”。
--check
, -c
检查表格是否有错误。这是默认操作。
--check-only-changed
, -C
只检查自上次检查后已更改或尚未正确关闭的表格。
--check-upgrade
, -g
调用CHECK TABLE
与 FOR UPGRADE
检查表的不兼容问题与服务器的当前版本的选项。
--compress
压缩客户端和服务器之间发送的所有信息(如果两者均支持压缩)。
--databases
, -B
处理命名数据库中的所有表。通常, mysqlcheck将命令行中的名字参数视为数据库名称,将任何以下名称视为表名称。使用此选项,它将所有名称参数视为数据库名称。
--debug[=
, debug_options
]-# [
debug_options
]
编写一个调试日志。一个典型的 debug_options
字符串是 。默认是。 d:t:o,
file_name
d:t:o
--debug-check
程序退出时打印一些调试信息。
--debug-info
在程序退出时打印调试信息和内存以及CPU使用情况统计信息。
--default-character-set=
charset_name
使用charset_name
作为默认字符集。请参见第10.14节“字符集配置”。
--defaults-extra-file=
file_name
在全局选项文件之后读取此选项文件,但在用户选项文件之前(在Unix上)。如果文件不存在或无法访问,则会发生错误。 file_name
如果作为相对路径名而非完整路径名给出,则相对于当前目录进行解释。
--defaults-file=
file_name
只使用给定的选项文件。如果文件不存在或无法访问,则会发生错误。 file_name
如果作为相对路径名而非完整路径名给出,则相对于当前目录进行解释。
例外:即使 --defaults-file
读取客户端程序.mylogin.cnf
。
--defaults-group-suffix=
str
不仅要阅读常用选项组,还要阅读具有常用名称和后缀的组 str
。例如, mysqlcheck通常读取 [client]
和 [mysqlcheck]
组。如果 --defaults-group-suffix=_other
给出选项,mysqlcheck也会读取[client_other]
和 [mysqlcheck_other]
组。
--extended
, -e
如果您使用此选项检查表格,则可确保它们100%一致,但需要很长时间。
如果您使用此选项来修复表,它将运行一次扩展修复,这不仅需要很长时间才能执行,还可能产生大量垃圾行!
--default-auth=
plugin
关于使用客户端身份验证插件的提示。请参见第6.3.10节“可插入认证”。
--enable-cleartext-plugin
启用mysql_clear_password
明文身份验证插件。(请参见 第6.5.1.4节“客户端明文可插入验证”。)
--fast
, -F
只检查没有正确关闭的表格。
--force
, -f
即使发生SQL错误也继续。
--get-server-public-key
从服务器请求基于RSA密钥对的密码交换所需的公钥。此选项适用于使用caching_sha2_password
身份验证插件进行身份验证的客户端 。对于那个插件,除非请求,服务器不会发送公钥。对于不使用该插件进行身份验证的帐户,此选项将被忽略。如果不使用基于RSA的密码交换,它也会被忽略,例如当客户端使用安全连接连接到服务器时。北大青鸟学校开发小组提供
如果 给出并指定了有效的公钥文件,则优先于 。 --server-public-key-path=
file_name
--get-server-public-key
有关该caching_sha2_password
插件的信息 ,请参见 第6.5.1.3节“缓存SHA-2可插入验证”。
--host=
, host_name
-h
host_name
连接到给定主机上的MySQL服务器。
--login-path=
name
从.mylogin.cnf
登录路径文件中的指定登录路径读取选项 。阿 “ 登录路径 ”是含有指定要连接到哪个MySQL服务器和选项哪个帐户作为认证选项组。要创建或修改登录路径文件,请使用 mysql_config_editor实用程序。请参见 第4.6.7节“ mysql_config_editor - MySQL配置实用程序”。
--medium-check
, -m
做一个比--extended
操作快的检查 。这只能找到所有错误的99.99%,在大多数情况下应该足够好。
--no-defaults
不要阅读任何选项文件。如果由于从选项文件读取未知选项而导致程序启动失败, --no-defaults
可用于防止读取它们。
例外是.mylogin.cnf
在任何情况下读取文件(如果存在)。这允许以比使用命令行更安全的方式来指定密码,即使在--no-defaults
使用时 也是如此。(.mylogin.cnf
由mysql_config_editor实用程序创建, 请参见 第4.6.7节“ mysql_config_editor - MySQL配置实用程序”。)
--optimize
, -o
优化表格。
--password[=
, password
]-p[
password
]
连接到服务器时使用的密码。如果使用short option form(-p
), 则在选项和密码之间不能有空格。如果您省略命令行中password
的--password
or -p
选项后面的 值 ,mysqlcheck会提示输入一个。
在命令行中指定密码应被视为不安全。请参见 第6.1.2.1节“密码安全的最终用户指南”。您可以使用选项文件来避免在命令行上输入密码。
--pipe
, -W
在Windows上,使用命名管道连接到服务器。该选项仅适用于服务器支持命名管道连接的情况。
--plugin-dir=
dir_name
在其中查找插件的目录。如果该--default-auth
选项用于指定身份验证插件,但是 mysqlcheck未找到该选项,请指定此选项 。请参见 第6.3.10节“可插入认证”。
--port=
, port_num
-P
port_num
用于连接的TCP / IP端口号。
--print-defaults
打印程序名称以及从选项文件中获取的所有选项。
--protocol={TCP|SOCKET|PIPE|MEMORY}
用于连接到服务器的连接协议。当其他连接参数通常会导致使用的协议不是您想要的协议时,这很有用。有关允许值的详细信息,请参见 第4.2.2节“连接到MySQL服务器”。
--quick
, -q
如果您使用此选项来检查表格,它会阻止检查扫描行以检查不正确的链接。这是最快的检查方法。
如果您使用此选项修复表格,则会尝试仅修复索引树。这是最快的修复方法。
--repair
, -r
执行修复可以修复几乎除了唯一键的唯一键以外的任何内容。
--secure-auth
这个选项在MySQL 8.0.3中被删除。
--server-public-key-path=
file_name
包含客户端副本的文件的路径名,该副本是服务器为基于RSA密钥对的密码交换所需的。该文件必须采用PEM格式。该选项适用于使用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.5.1.2节“SHA-256可插入验证”和 第6.5.1.3节“缓存SHA-2可插入验证”。
--shared-memory-base-name=
name
在Windows上,使用共享内存名称,用于使用共享内存连接到本地服务器。默认值是MYSQL
。共享内存名称区分大小写。
必须启动服务器, --shared-memory
并启用共享内存连接选项。
--silent
, -s
静音模式。只打印错误消息。
--skip-database=
db_name
不要在mysqlcheck执行的操作中包含指定的数据库(区分大小写)。
--socket=
, path
-S
path
连接到localhost
要使用的Unix套接字文件,或在Windows上使用命名管道的名称。
--ssl*
开头的选项--ssl
指定是否使用SSL连接到服务器,并指出在哪里可以找到SSL密钥和证书。请参见 第6.4.2节“加密连接的命令选项”。
--tables
覆盖--databases
或-B
选项。该选项后面的所有名称参数都被视为表名。
--tls-version=
protocol_list
客户端允许的加密连接协议。该值是一个包含一个或多个协议名称的逗号分隔列表。可以为这个选项命名的协议取决于用于编译MySQL的SSL库。有关详细信息,请参见 第6.4.6节“加密连接协议和密码”。
--use-frm
对于MyISAM
表上的修复操作,从数据字典中获取表结构,以便即使.MYI
头损坏也可以修复表。
--user=
, user_name
-u
user_name
连接到服务器时使用的MySQL用户名。
--verbose
, -v
详细模式。打印有关程序操作各个阶段的信息。
--version
, -V
显示版本信息并退出。
--write-binlog
此选项是默认启用的,这样 ANALYZE TABLE
, OPTIMIZE TABLE
和 REPAIR TABLE
所产生的报表mysqlcheck的被写入二进制日志。使用 --skip-write-binlog
导致NO_WRITE_TO_BINLOG
被添加到让他们没有记录的语句。使用 --skip-write-binlog
时,这些声明不应该被发送到复制的奴隶或使用二进制日志从备份恢复时运行。 翻译来源:学什么技术好翻译