MySQL:Client端程序

来自Wikioe
跳到导航 跳到搜索


mysql:MySQL 命令行 Client 端

mysql是具有输入行编辑功能的简单 SQL Shell。

它支持交互和非交互使用:
    1、交互式使用时,查询结果以 ASCIItable 格式显示。
    2、非交互使用(例如,用作过滤器)时,结果以制 table 符分隔的格式显示。可以使用命令选项更改输出格式。

mysql 的使用:从命令解释器的提示中调用它,如下所示:

shell> mysql db_name

或:

shell> mysql --user=user_name --password db_name
Enter password: your_password

然后键入一个 SQL 语句,并以“;”、“\g”或“\G”结尾,然后按 Enter。

  • 如果输入“Ctrl”+“C”,则会中断当前语句,否则将取消部分输入行。
  • 可以在脚本文件(批处理文件)中执行 SQL 语句,如下所示:
shell> mysql db_name < script.sql > output.tab
  • 在 Unix 上,mysqlClient 端将交互式执行的语句记录到历史文件中。
  • 如果由于内存不足而无法处理大型结果集而遇到问题,请使用“--quick”选项。这迫使mysql一次从服务器上检索结果,而不是检索整个结果集并在显示之前将其缓冲在内存中。这是通过使用 Client 端/服务器库中的“mysql_use_result()” C API 函数而不是“mysql_store_result()”返回结果集来完成的。

mysqlClient 端选项

Option Name Description Introduced Deprecated
--auto-rehash 启用自动重新哈希
--auto-vertical-output 启用自动垂直结果集显示
--batch 不使用历史记录文件
--binary-as-hex 以十六进制显示二进制值 5.7.19
--binary-mode 禁用\ r\n-到-\ n 转换和将\ 0 视为查询结束
--bind-address 使用指定的网络接口连接到 MySQL Server
--character-sets-dir 字符集的安装目录
--column-names 在结果中写入列名
--column-type-info 显示结果集元数据
--comments 在发送到服务器的语句中保留还是删除 Comments
--compress 压缩 Client 端和服务器之间发送的所有信息
--connect-expired-password 指示服务器 Client 端可以处理过期密码沙箱模式
--connect-timeout 连接超时之前的秒数
--database 要使用的数据库
--debug 编写调试日志;仅当 MySQL 使用调试支持构建时才受支持
--debug-check 程序退出时打印调试信息
--debug-info 程序退出时打印调试信息,内存和 CPU 统计信息
--default-auth 身份验证插件使用
--default-character-set 指定默认字符集
--defaults-extra-file 除常规选项文件外,还读取命名的选项文件
--defaults-file 只读命名的选项文件
--defaults-group-suffix 选项组后缀值
--delimiter 设置语句定界符
--enable-cleartext-plugin 启用明文身份验证插件
--execute 执行语句并退出
--force 即使发生 SQL 错误,也要 continue
--get-server-public-key 从服务器请求 RSA 公钥 5.7.23
--help 显示帮助信息并退出
--histignore 模式指定日志记录要忽略的语句
--host MySQL 服务器所在的主机
--html 产生 HTML 输出
--ignore-spaces 忽略函数名称后的空格
--init-command 连接后执行的 SQL 语句
--line-numbers Importing 行号以查找错误
--local-infile 启用或禁用 LOAD DATA 的 LOCAL 功能
--login-path 从.mylogin.cnf 中读取登录路径选项
--max-allowed-packet 发送到服务器或从服务器接收的最大数据包长度
--max-join-size 使用--safe-updates 时联接中行的自动限制
--named-commands 启用命名的 mysql 命令
--net-buffer-length TCP/IP 和套接字通信的缓冲区大小
--no-auto-rehash 禁用自动重新哈希
--no-beep 发生错误时请勿发出哔声
--no-defaults 不读取选项文件
--one-database 忽略命令行中指定的默认数据库的语句以外的语句
--pager 使用给定命令进行分页查询输出
--password 连接服务器时使用的密码
--pipe 使用命名管道连接到服务器(仅 Windows)
--plugin-dir 安装插件的目录
--port 用于连接的 TCP/IP 端口号
--print-defaults 打印默认选项
--prompt 将提示设置为指定格式
--protocol 使用的传输协议
--quick 不要缓存每个查询结果
--raw 写列值时不进行转义转换
--reconnect 如果与服务器的连接丢失,则自动尝试重新连接
--safe-updates, --i-am-a-dummy 仅允许指定键值的 UPDATE 和 DELETE 语句
--secure-auth 不要以旧(4.1 之前)格式向服务器发送密码 Yes
--select-limit 使用--safe-updates 时 SELECT 语句的自动限制
--server-public-key-path 包含 RSA 公钥的文件的路径名
--shared-memory-base-name 共享内存连接的共享内存名称(仅 Windows)
--show-warnings 在每个语句后显示警告(如果有)
--sigint-ignore 忽略 SIGINTsignal(通常是键入 Control C 的结果)
--silent Silent mode
--skip-auto-rehash 禁用自动重新哈希
--skip-column-names 不要在结果中写列名
--skip-line-numbers 跳过行号以查找错误
--skip-named-commands 禁用命名的 mysql 命令
--skip-pager Disable paging
--skip-reconnect Disable reconnecting
--socket Unix 套接字文件或 Windows 命名管道使用
--ssl 启用连接加密
--ssl-ca 包含受信任的 SSL 证书颁发机构列 table 的文件
--ssl-capath 包含受信任的 SSL 证书颁发机构证书文件的目录
--ssl-cert 包含 X.509 证书的文件
--ssl-cipher 连接加密的允许密码
--ssl-crl 包含证书吊销列 table 的文件
--ssl-crlpath 包含证书吊销列 table 文件的目录
--ssl-key 包含 X.509 密钥的文件
--ssl-mode 与服务器连接的所需安全状态 5.7.11
--ssl-verify-server-cert 根据服务器证书的通用名身份验证主机名
--syslog 将交互式语句记录到 syslog
--table 以 table 格格式显示输出
--tee 将输出副本追加到命名文件
--tls-version 允许的 TLS 协议进行加密连接 5.7.10
--unbuffered 每次查询后刷新缓冲区
--user 连接服务器时使用的 MySQL 用户名
--verbose Verbose mode
--version 显示版本信息并退出
--vertical 垂直打印查询输出行(每列值一行)
--wait 如果无法构建连接,请 await 并重试,而不是中止
--xml 产生 XML 输出

mysqlClient 端命令

mysql 将您发出的每个 SQL 语句发送到要执行的服务器。 mysql本身也解释了一组命令。有关这些命令的列表,请在“mysql>”提示符下键入“help”或“\h”:

mysql> help

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
clear     (\c) Clear the current input statement.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit      (\e) Edit command with $EDITOR.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
nopager   (\n) Disable pager, print to stdout.
notee     (\t) Don't write into outfile.
pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print     (\p) Print current command.
prompt    (\R) Change your mysql prompt.
quit      (\q) Quit mysql.
rehash    (\#) Rebuild completion hash.
source    (\.) Execute an SQL script file. Takes a file name as an argument.
status    (\s) Get status information from the server.
system    (\!) Execute a system shell command.
tee       (\T) Set outfile [to_outfile]. Append everything into given
               outfile.
use       (\u) Use another database. Takes database name as argument.
charset   (\C) Switch to another charset. Might be needed for processing
               binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
resetconnection(\x) Clean session context.

For server side help, type 'help contents'

mysqlClient 端记录

mysqlClient 端可以为交互式执行的语句执行以下类型的日志记录:

  1. 在 Unix 上,mysql将语句写入历史文件。默认情况下,此文件在您的主目录中名为“.mysql_history”。要指定其他文件,请设置“MYSQL_HISTFILE”环境变量的值。
  2. 在所有平台上,如果指定了“--syslog”选项,则mysql将语句写入系统日志记录工具:
    1. 在 Unix 上,这是 syslog;
    2. 在 Windows 上,它是 Windows 事件日志。
    • 记录的消息出现的目的地取决于系统。在 Linux 上,目标通常是“/var/log/messages”文件。

mysqlClient 端服务器端帮助

如果为help命令提供参数,则mysql将其用作搜索字符串,以从《 MySQL 参考手册》的内容访问服务器端帮助。此命令的正确操作要求使用帮助主题信息初始化mysql数据库中的帮助列表。

mysql> help search_string
  • 搜索字符串可以包含通配符“%”和“_”。这些含义与使用LIKE运算符执行的模式匹配操作相同。例如,“HELP rep%”返回以“rep”开头的主题列表:

从文本文件执行 SQL 语句

mysqlClient 端通常以交互方式使用,如下所示:

shell> mysql db_name
  1. 但是,也可以将 SQL 语句放入文件中,然后告诉mysql从该文件中读取其输入。
    如,文本文件“text_file”中包含要执行的语句,然后调用mysql:
    shell> mysql db_name < text_file
    
  2. 如果将“use db_name”语句作为文件中的第一条语句,则无需在命令行上指定数据库名称:
    shell> mysql < text_file
    
  3. 如果已经在运行mysql,则可以使用“source”命令或“\.”命令执行 SQL 脚本文件:
    mysql> source file_name
    mysql> \. file_name
    
  4. 有时,您可能希望您的脚本向用户显示进度信息。为此,您可以插入如下语句:
    SELECT '<info_to_display>' AS ' ';
    
    显示的语句输出“<info_to_display>”。
  5. 还可以使用“--verbose”选项调用mysql,这会使每个语句在产生结果之前显示。


  • mysql 会忽略输入文件开头的 Unicode 字节 Sequences 标记(BOM)字符:
    以前,它会读取它们并将其发送到服务器,从而导致语法错误。BOM 的存在不会导致mysql更改其默认字符集。
    为此,如果需要指定文件输入字符集,请使用诸如“--default-character-set=utf8”之类的选项调用mysql。【???】

mysqlClient 端提示

  1. 输入行编辑【略】
  2. 禁用互动历史记录【略】
  3. Windows 上的 Unicode 支持【略】
  4. 垂直显示查询结果【略】
  5. 使用安全更新模式(-安全更新) 【略】
  6. 禁用 MySQL 自动重新连接 【略】
  7. MySQLClient 端解析器与服务器解析器 【略】

mysqladmin:MySQL 服务器 Management 程序

mysqladmin 是用于执行 Management 操作的 Client 端。您可以使用它来检查服务器的配置和当前状态,创建和删除数据库等等。

调用mysqladmin:

shell> mysqladmin [options] command [command-arg] [command [command-arg]] ...


mysqladmin 支持的 command:

Option Name Description
create db_name 创建一个名为“db_name”的新数据库。
debug 告诉服务器将调试信息写入错误日志。连接的用户必须具有SUPER特权。此信息的格式和内容可能会更改。
drop db_name 删除名为* db_name *的数据库及其所有 table。
extended-status 显示服务器状态变量及其值。
flush-hosts 刷新主机缓存中的所有信息。
flush-logs [log_type ...] 刷新所有日志。
  • mysqladmin flush-logs命令允许提供可选的日志类型,以指定要刷新的日志。遵循flush-logs命令,您可以提供一个空格分隔的以下一种或多种日志类型的列表:binary,engine,error,general,relay,slow。这些对应于可以为FLUSH LOGS SQL 语句指定的日志类型。
flush-privileges 重新加载授权 table(与reload相同)。
flush-status 清除状态变量。
flush-tables 刷新所有 table。
flush-threads 刷新线程缓存。
kill id,id,... 杀死服务器线程。如果给出了多个线程 ID 值,则列 table 中不能有空格。
  • 要杀死属于其他用户的线程,连接的用户必须具有SUPER特权。
old-password new_password 就像password命令一样,但是使用旧的(4.1 之前的)密码哈希格式存储密码。
  • 此命令已在 MySQL 5.7.5 中删除。
password new_password 设置新密码。这会将您与mysqladmin一起用于连接到服务器的帐户的密码更改为“new_password”。因此,下次您使用同一帐户调用mysqladmin(或任何其他 Client 端程序)时,将需要指定新密码。
  • 使用mysqladmin设置密码应视为不安全。在某些系统上,您的密码对系统状态程序(例如 ps )可见,其他用户可能会调用该密码来显示命令行。 MySQLClient 端通常在初始化序列期间用零覆盖命令行密码参数。但是,仍然存在一个短暂的时间间隔,在此间隔内该值是可见的。同样,在某些系统上,这种覆盖策略无效,并且密码对 ps 仍然可见。 (SystemV Unix 系统以及其他系统可能会遇到此问题.)
  • 如果“new_password”值包含空格或其他命令解释器专用的字符,则需要将其用引号引起来。在 Windows 上,请确保使用双引号而不是单引号。单引号不会从密码中删除,而是被解释为密码的一部分。例如:
    shell> mysqladmin password "my new password"
    
  • password 命令后可以省略新密码。在这种情况下,mysqladmin会提示您输入密码值,这使您避免在命令行上指定密码。仅当 password 是 mysqladmin 命令行上的最终命令时,才应忽略密码值。否则,将下一个参数用作密码。
  • 如果服务器使用“--skip-grant-tables”选项启动,请不要使用此命令。不会更改密码。即使在同一命令行上在“password”命令之前加上“flush-privileges”以重新启用授权 table,也是如此,因为在连接之后会进行刷新操作。但是,您可以使用“mysqladmin flush-privileges”重新启用授权 table,然后使用单独的“mysqladmin password”命令更改密码。
ping 检查服务器是否可用。如果服务器正在运行,则mysqladmin的返回状态为 0,否则为 1。即使出现诸如Access denied之类的错误,该值也为 0,因为这意味着服务器正在运行但拒绝了连接,这与服务器未运行不同。
processlist 显示活动服务器线程的列 table。这就像“SHOW PROCESSLIST”语句的输出。如果给出了“--verbose”选项,则输出类似于显示完整的程序 Lists。
reload 重新加载授权 table。
refresh 刷新所有 table,然后关闭并打开日志文件。
shutdown 停止服务器。
start-slave 在从属服务器上开始复制。
status 显示简短的服务器状态消息。
stop-slave 在从属服务器上停止复制。
variables 显示服务器系统变量及其值。
version 显示来自服务器的版本信息。
  • 所有命令都可以缩短为任何唯一的前缀。例如:
shell> mysqladmin proc stat
+----+-------+-----------+----+---------+------+-------+------------------+
| Id | User  | Host      | db | Command | Time | State | Info             |
+----+-------+-----------+----+---------+------+-------+------------------+
| 51 | jones | localhost |    | Query   | 0    |       | show processlist |
+----+-------+-----------+----+---------+------+-------+------------------+
Uptime: 1473624  Threads: 1  Questions: 39487
Slow queries: 0  Opens: 541  Flush tables: 1
Open tables: 19  Queries per second avg: 0.0268
  • “mysqladmin status”命令结果显示以下值:
    1. Uptime:MySQL 服务器已运行的秒数。
    2. Threads:活动线程(Client 端)的数量。
    3. Questions:自服务器启动以来,来自 Client 端的问题(查询)数。
    4. Slow queries:耗时超过long_query_time秒的查询数。参见第 5.4.5 节“缓慢的查询日志”。
    5. Opens:服务器已打开的 table 数。
    6. Flush tables:服务器已执行的“flush-*”,“refresh”和“reload”命令的数量。
    7. Open tables:当前打开的 table 数。
  • 如果使用 Unix 套接字文件连接到本地服务器时执行“mysqladmin shutdown”,则mysqladmin 等待直到服务器的进程 ID 文件被删除,以确保服务器已正确停止。


mysqladmin 支持的 options:

  • 可以在命令行或配置文件的“[mysqladmin]”和“[client]”组中指定这些选项
Option Name Description Introduced Deprecated
--bind-address 使用指定的网络接口连接到 MySQL Server  
--compress 压缩 Client 端和服务器之间发送的所有信息  
--connect-timeout 连接超时之前的秒数  
--count 要重复执行命令的迭代次数  
--debug 编写调试日志  
--debug-check 程序退出时打印调试信息  
--debug-info 程序退出时打印调试信息,内存和 CPU 统计信息  
--default-auth 身份验证插件使用  
--default-character-set 指定默认字符集  
--defaults-extra-file 除常规选项文件外,还读取命名的选项文件  
--defaults-file 只读命名的选项文件  
--defaults-group-suffix 选项组后缀值  
--enable-cleartext-plugin 启用明文身份验证插件  
--force 即使发生 SQL 错误,也要 continue  
--get-server-public-key 从服务器请求 RSA 公钥 5.7.23
--help 显示帮助信息并退出  
--host MySQL 服务器所在的主机  
--login-path 从.mylogin.cnf 中读取登录路径选项  
--no-beep 发生错误时请勿发出哔声  
--no-defaults 不读取选项文件  
--password 连接服务器时使用的密码  
--pipe 使用命名管道连接到服务器(仅 Windows)  
--plugin-dir 安装插件的目录  
--port 用于连接的 TCP/IP 端口号  
--print-defaults 打印默认选项  
--protocol 使用的传输协议  
--relative 与--sleep 选项一起使用时,显示当前值与先前值之间的差异  
--secure-auth 不要以旧(4.1 之前)格式向服务器发送密码 Yes
--server-public-key-path 包含 RSA 公钥的文件的路径名 5.7.23
--shared-memory-base-name 共享内存连接的共享内存名称(仅 Windows)  
--show-warnings 语句执行后显示警告  
--shutdown-timeout await 服务器关闭的最大秒数  
--silent Silent mode  
--sleep 重复执行命令,在两次之间睡眠延迟几秒钟  
--socket Unix 套接字文件或 Windows 命名管道使用  
--ssl 启用连接加密  
--ssl-ca 包含受信任的 SSL 证书颁发机构列表的文件  
--ssl-capath 包含受信任的 SSL 证书颁发机构证书文件的目录  
--ssl-cert 包含 X.509 证书的文件  
--ssl-cipher 连接加密的允许密码  
--ssl-crl 包含证书吊销列 table 的文件  
--ssl-crlpath 包含证书吊销列 table 文件的目录  
--ssl-key 包含 X.509 密钥的文件  
--ssl-mode 与服务器连接的所需安全状态 5.7.11
--ssl-verify-server-cert 根据服务器证书的通用名身份验证主机名  
--tls-version 允许的 TLS 协议进行加密连接 5.7.10
--user 连接服务器时使用的 MySQL 用户名  
--verbose 详细信息  
--version 显示版本信息并退出  
--vertical 垂直打印查询输出行(每列值一行)  
--wait 如果无法构建连接,请 await 并重试,而不是中止  

mysqldump:数据库备份程序

mysqldump 客户机实用程序执行逻辑备份,生成一组SQL语句,可以执行这些语句来重现原始数据库对象定义和表数据。

它转储一个或多个MySQL数据库,以便备份或传输到另一个SQL服务器。

mysqldump命令还可以生成CSV、其他分隔文本或XML格式的输出。


mysqldump至少对转储 table 具有SELECT权限,对转储视图至少具有SHOW VIEW权限,对于转储触发器具有TRIGGER权限,如果不使用“--single-transaction”选项则需要LOCK TABLES权限【允许使用显式的LOCK TABLES语句来锁定您具有SELECT权限的 table。包括使用写锁,可以防止其他会话读取锁定的 table。】,并且(从 MySQL 5.7.31 起)至少需要PROCESS权限【PROCESS特权控制对服务器中正在执行的线程的信息(即,有关会话正在执行的语句的信息)的访问】。如选项说明中所述,某些选项可能需要其他特权。

  • --single-transaction:此选项会将隔离级别设置为:REPEATABLE READ。并且随后再执行一条START TRANSACTION语句,让整个数据在dump过程中保证数据的一致性,这个选项对InnoDB的数据表很有用,且不会锁表。但是这个不能保证MyISAM表和MEMORY表的数据一致性。

要重新加载转储文件,您必须具有执行该文件所包含的语句所需的特权,例如由这些语句创建的对象的相应CREATE权限。

  • 在 Windows 上使用 PowerShell 通过输出重定向创建的转储将创建具有 UTF-16 编码的文件:
    shell> mysqldump [options] > dump.sql
    
    但是,由于不允许将 UTF-16 作为连接字符集(请参见不允许的 Client 字符集),因此转储文件将无法正确加载。要变通解决此问题,请使用“--result-file”选项,该选项以 ASCII 格式创建输出:
    shell> mysqldump [options] --result-file=dump.sql
    

性能和可伸缩性注意事项

mysqldump 的优势包括在还原之前查看甚至编辑输出的便利性和灵活性。您可以克隆数据库以进行开发和 DBA 工作,也可以对现有数据库进行一些改动以进行测试。它并非旨在作为用于备份大量数据的快速或可扩展解决方案。对于大数据量,即使备份步骤花费了合理的时间,恢复数据也可能会非常缓慢,因为重播 SQL 语句会涉及用于插入,创建索引等的磁盘 I/O。

  • 对于大规模备份和还原,更适合使用物理备份来复制原始格式的数据文件,该格式可以快速还原:
    如果您的 table 主要是 InnoDBtable,或者混合使用 InnoDBMyISAMtable ,请考虑使用 MySQL Enterprise Backup 产品的 mysqlbackup 命令。【mysqlbackup是一个热备份工具、也就是说它不像mysqldump那样给表上一个全局锁】它为InnoDB备份提供了最佳性能,同时中断最少。它还可以从 MyISAM 和其他存储引擎备份 table;并且它提供了许多方便的选项来适应不同的备份方案。
  • mysqldump可以逐行检索和转储 table 内容,也可以从 table 中检索全部内容并在转储之前将其缓冲在内存中。如果要转储大 table,内存中的缓冲可能会成为问题。要逐行转储 table,请使用“--quick”选项(或“--opt”,启用“--quick”)。【默认情况下启用“--opt”选项(因此也启用“--quick”),因此要启用内存缓冲,请使用“--skip-quick”】
  • 如果您使用的是最新版本的 mysqldump 来生成转储以重新加载到非常旧的 MySQL 服务器中,请使用“--skip-opt”选项而不是“--opt”或“--extended-insert”选项。

调用语法

通常,共有三种使用mysqldump的方式-为了转储“一组一个或多个 table”,“一组一个或多个完整数据库”或“整个 MySQL 服务器”,如下所示:

shell> mysqldump [options] db_name [tbl_name ...]
shell> mysqldump [options] --databases db_name ...
shell> mysqldump [options] --all-databases
  • 要查看您的mysqldump版本支持的选项列表,请发出命令“mysqldump --help”。

options 语法

mysqldump 支持以下选项,可以在命令行或选项文件的[mysqldump][client]组中指定这些选项:

Option Name Description Introduced Deprecated
--add-drop-database 在每个 CREATE DATABASE 语句之前添加 DROP DATABASE 语句
--add-drop-table 在每个 CREATE TABLE 语句之前添加 DROP TABLE 语句
--add-drop-trigger 在每个 CREATE TRIGGER 语句之前添加 DROP TRIGGER 语句
--add-locks 用 LOCK TABLES 和 UNLOCK TABLES 语句包围每个 table 转储
--all-databases 转储所有数据库中的所有 table
--allow-keywords 允许创建作为关键字的列名
--apply-slave-statements 在 CHANGE MASTER 语句之前包含 STOP SLAVE,在输出结束时包含 START SLAVE
--bind-address 使用指定的网络接口连接到 MySQL Server
--character-sets-dir 字符集的安装目录
--comments 添加 Comments 到转储文件
--compact 产生更紧凑的输出
--compatible 产生与其他数据库系统或更旧的 MySQL 服务器更兼容的输出
--complete-insert 使用包含列名称的完整 INSERT 语句
--compress 压缩 Client 端和服务器之间发送的所有信息
--create-options 在 CREATE TABLE 语句中包括所有特定于 MySQL 的 table 选项
--databases 将所有名称参数解释为数据库名称
--debug 编写调试日志
--debug-check 程序退出时打印调试信息
--debug-info 程序退出时打印调试信息,内存和 CPU 统计信息
--default-auth 身份验证插件使用
--default-character-set 指定默认字符集
--defaults-extra-file 除常规选项文件外,还读取命名的选项文件
--defaults-file 只读命名的选项文件
--defaults-group-suffix 选项组后缀值
--delete-master-logs 在主复制服务器上,执行转储操作后删除二进制日志
--disable-keys 对于每个 table,在 INSERT 语句周围加上用于禁用和启用键的语句
--dump-date 如果给出--comments,则将转储日期包括为“转储完成于”Comments
--dump-slave 包含 CHANGE MASTER 语句,该语句列出了从属主机的二进制日志坐标
--enable-cleartext-plugin 启用明文身份验证插件 5.7.10
--events 从转储的数据库中转储事件
--extended-insert 使用多行 INSERT 语法
--fields-enclosed-by 该选项与--tab 选项一起使用,其含义与 LOAD DATA 的相应子句相同
--fields-escaped-by 该选项与--tab 选项一起使用,其含义与 LOAD DATA 的相应子句相同
--fields-optionally-enclosed-by 该选项与--tab 选项一起使用,其含义与 LOAD DATA 的相应子句相同
--fields-terminated-by 该选项与--tab 选项一起使用,其含义与 LOAD DATA 的相应子句相同
--flush-logs 开始转储之前刷新 MySQL 服务器日志文件
--flush-privileges 转储 mysql 数据库后发出 FLUSH PRIVILEGES 语句
--force 即使在 table 转储期间发生 SQL 错误,也要 continue
--get-server-public-key 从服务器请求 RSA 公钥 5.7.23
--help 显示帮助信息并退出
--hex-blob 使用十六进制 table 示法转储二进制列
--host MySQL 服务器所在的主机
--ignore-error 忽略指定的错误
--ignore-table 不要转储给定的 table
--include-master-host-port 在由--dump-slave 生成的 CHANGE MASTER 语句中包括 MASTER_HOST/MASTER_PORT 选项
--insert-ignore 编写 INSERT IGNORE 而不是 INSERT 语句
--lines-terminated-by 该选项与--tab 选项一起使用,其含义与 LOAD DATA 的相应子句相同
--lock-all-tables 锁定所有数据库中的所有 table
--lock-tables 转储之前锁定所有 table
--log-error 将警告和错误附加到命名文件
--login-path 从.mylogin.cnf 中读取登录路径选项
--master-data 将二进制日志文件的名称和位置写入输出
--max-allowed-packet 发送到服务器或从服务器接收的最大数据包长度
--net-buffer-length TCP/IP 和套接字通信的缓冲区大小
--no-autocommit 将每个转储 table 的 INSERT 语句包含在 SET autocommit = 0 和 COMMIT 语句内
--no-create-db 不要写 CREATE DATABASE 语句
--no-create-info 不要编写重新创建每个转储 table 的 CREATE TABLE 语句
--no-data 不要转储 table 内容
--no-defaults 不读取选项文件
--no-set-names 与--skip-set-charset 相同
--no-tablespaces 不要在输出中写入任何 CREATE LOGFILE GROUP 或 CREATE TABLESPACE 语句
--opt --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset 的简写
--order-by-primary 转储按主键或第一个唯一索引排序的每个 table 的行
--password 连接服务器时使用的密码
--pipe 使用命名管道连接到服务器(仅 Windows)
--plugin-dir 安装插件的目录
--port 用于连接的 TCP/IP 端口号
--print-defaults 打印默认选项
--protocol 使用的传输协议
--quick 一次从服务器检索 table 的行
--quote-names 反引号字符内的引号标识符
--replace 编写 REPLACE 语句而不是 INSERT 语句
--result-file 直接输出到给定文件
--routines 从转储的数据库中转储存储的例程(过程和函数)
--secure-auth 不要以旧(4.1 之前)格式向服务器发送密码 Yes
--server-public-key-path 包含 RSA 公钥的文件的路径名 5.7.23
--set-charset 将 SET NAMES default_character_set 添加到输出
--set-gtid-purged 是否将 SET @@ GLOBAL.GTID_PURGED 添加到输出
--shared-memory-base-name 共享内存连接的共享内存名称(仅 Windows)
--single-transaction 从服务器转储数据之前发出 BEGIN SQL 语句
--skip-add-drop-table 不要在每个 CREATE TABLE 语句之前添加 DROP TABLE 语句
--skip-add-locks 不添加锁
--skip-comments 不要添加 Comments 到转储文件
--skip-compact 不要产生更紧凑的输出
--skip-disable-keys 不要禁用按键
--skip-extended-insert 关闭扩展插入
--skip-opt 关闭--opt 设置的选项
--skip-quick 不要一次从服务器检索 table 的行
--skip-quote-names 不引用标识符
--skip-set-charset 不要写 SET NAMES 语句
--skip-triggers 不要转储触发器
--skip-tz-utc 关闭 tz-utc
--socket Unix 套接字文件或 Windows 命名管道使用
--ssl 启用连接加密
--ssl-ca 包含受信任的 SSL 证书颁发机构列 table 的文件
--ssl-capath 包含受信任的 SSL 证书颁发机构证书文件的目录
--ssl-cert 包含 X.509 证书的文件
--ssl-cipher 连接加密的允许密码
--ssl-crl 包含证书吊销列 table 的文件
--ssl-crlpath 包含证书吊销列 table 文件的目录
--ssl-key 包含 X.509 密钥的文件
--ssl-mode 与服务器连接的所需安全状态 5.7.11
--ssl-verify-server-cert 根据服务器证书的通用名身份验证主机名
--tab 产生制 table 符分隔的数据文件
--tables 覆盖-数据库或-B 选项
--tls-version 允许的 TLS 协议进行加密连接 5.7.10
--triggers 每个转储 table 的转储触发器
--tz-utc 添加 SET TIME_ZONE ='00:00'来转储文件
--user 连接服务器时使用的 MySQL 用户名
--verbose 详细信息
--version 显示版本信息并退出
--where 仅转储给定 WHERE 条件选择的行
--xml 产生 XML 输出

连接选项

mysqldump 命令登录到 MySQL 服务器以提取信息。以下选项指定如何连接到同一台计算机或远程系统上的 MySQL 服务器:

Option Name Description
--bind-address=ip_address 在具有多个网络接口的计算机上,使用此选项选择用于连接到 MySQL 服务器的接口。
--compress , -C 尽可能压缩 Client 端和服务器之间发送的所有信息。参见第 4.2.6 节“连接压缩控制”。
--default-auth=plugin 有关使用哪个 Client 端身份验证插件的提示。参见第 6.2.13 节“可插入身份验证”。
--enable-cleartext-plugin 启用mysql_clear_password明文身份验证插件。 (请参阅第 6.4.1.6 节“Client 端明文可插入身份验证”。)
  • (MySQL 5.7.10 中添加了此选项。)
--get-server-public-key 从服务器请求基于 RSA 密钥对的密码交换所需的公共密钥。此选项适用于使用caching_sha2_password身份验证插件进行身份验证的 Client 端。对于该插件,除非请求,否则服务器不会发送公钥。对于未使用该插件进行身份验证的帐户,将忽略此选项。如果不使用基于 RSA 的密码交换,也将被忽略,例如 Client 端使用安全连接连接到服务器时。
  • 如果给出了--server-public-key-path=file_name并指定了有效的公共密钥文件,则它优先于--get-server-public-key。
  • (已添加到 MySQL 5.7.23 中。)
--host=host_name , -h host_name 从给定主机上的 MySQL 服务器中转储数据。默认主机为localhost。
--login-path=name 从.mylogin.cnf登录路径文件中的命名登录路径中读取选项。 “登录路径”是一个选项组,其中包含一些选项,这些选项指定要连接到哪个 MySQL 服务器以及要作为身份验证的帐户。要创建或修改登录路径文件,请使用mysql_config_editorUtil。参见第 4.6.6 节“ mysql_config_editor-MySQL 配置 Util”。
--password[=password] , -p[password] 用于连接服务器的 MySQL 帐户的密码。密码值是可选的。如果未给出,mysqldump提示 Importing 一个。如果提供,则--password=或-p与后面的密码之间必须没有空格。如果未指定密码选项,则默认为不发送密码。
  • 在命令行上指定密码应该被认为是不安全的。为避免在命令行上 Importing 密码,请使用选项文件。
  • 要明确指定没有密码并且mysqldump不应提示 Importing 密码,请使用--skip-password选项。
--pipe , -W 在 Windows 上,使用命名管道连接到服务器。仅当服务器在启用了named_pipe系统变量的情况下启动以支持命名管道连接时,此选项才适用。此外,构建连接的用户必须是named_pipe_full_access_group系统变量指定的 Windows 组的成员。
--plugin-dir=dir_name 在其中查找插件的目录。如果--default-auth选项用于指定身份验证插件,但mysqldump找不到它,请指定此选项。参见第 6.2.13 节“可插入身份验证”。
--port=port_num , -P port_num 对于 TCP/IP 连接,使用的端口号。
--protocol={TCP|SOCKET|PIPE|MEMORY} 用于连接到服务器的传输协议。当其他连接参数通常导致使用您想要的协议以外的协议时,此功能很有用。有关允许值的详细信息,请参见第 4.2.5 节“连接传输协议”。
--secure-auth 不要以旧(4.1 之前)格式向服务器发送密码。这样可以防止除使用较新密码格式的服务器以外的其他连接。
  • 从 MySQL 5.7.5 开始,此选项已被弃用,并将在以后的 MySQL 版本中删除。它始终处于启用状态,尝试禁用它(--skip-secure-auth,--secure-auth=0)会产生错误。在 MySQL 5.7.5 之前,此选项默认为启用,但可以禁用。
  • 使用 4.1 之前的哈希方法的密码比使用本地密码哈希方法的密码安全性较低,应避免使用。不建议使用 4.1 之前的密码,并在 MySQL 5.7.5 中删除了对它们的支持。有关帐户升级的说明,请参阅第 6.4.1.3 节“迁移到 4.1 版之前的密码哈希和 mysql_old_password 插件”。
--server-public-key-path=file_name PEM 格式的文件的路径名,其中包含服务器用于基于 RSA 密钥对的密码交换所需的公用密钥的 Client 端副本。此选项适用于使用sha256_password或caching_sha2_password身份验证插件进行身份验证的 Client 端。对于未通过这些插件之一进行身份验证的帐户,将忽略此选项。如果不使用基于 RSA 的密码交换,也将被忽略,例如 Client 端使用安全连接连接到服务器时。
  • 如果给出了--server-public-key-path=file_name并指定了有效的公共密钥文件,则它优先于--get-server-public-key。
  • 对于sha256_password,仅当使用 OpenSSL 构建 MySQL 时,此选项才适用。
  • 已添加到 MySQL 5.7.23 中。
--socket=path , -S path 对于到localhost的连接(要使用的 Unix 套接字文件),或者在 Windows 上,要使用的命名管道的名称。

在 Windows 上,仅当在启用了named_pipe系统变量以支持命名管道连接的情况下启动服务器时,此选项才适用。此外,构建连接的用户必须是named_pipe_full_access_group系统变量指定的 Windows 组的成员。

--ssl* 以--ssl开头的选项指定是否使用 SSL 连接到服务器,并指示在何处查找 SSL 密钥和证书。参见加密连接的命令选项。
--tls-version=protocol_list 加密连接允许的 TLS 协议。该值是一个或多个逗号分隔的协议名称的列 table。可以为此选项命名的协议取决于用于编译 MySQL 的 SSL 库。有关详细信息,请参见第 6.3.2 节“加密的连接 TLS 协议和密码”。
  • (MySQL 5.7.10 中添加了此选项。)
--user=user_name , -u user_name 用于连接到服务器的 MySQL 帐户的用户名。

选项文件选项

这些选项用于控制要读取的选项文件:

Option Name Description
--defaults-extra-file=file_name 在全局选项文件之后但在用户选项文件之前(在 Unix 上)读取此选项文件。如果该文件不存在或无法访问,则发生错误。
  • “file_name”如果是相对路径名而不是完整路径名,则相对于当前目录进行解释。
--defaults-file=file_name 仅使用给定的选项文件。如果该文件不存在或无法访问,则发生错误。“file_name”如果是相对路径名而不是完整路径名,则相对于当前目录进行解释。
  • 例外:即使使用--defaults-file,Client 端程序也读取.mylogin.cnf。
--defaults-group-suffix=str 不仅阅读常规选项组,还阅读具有常规名称和后缀* str *的组。例如,mysqldump通常读取[client]和[mysqldump]组。如果提供了--defaults-group-suffix=_other选项,则mysqldump也会读取[client_other]和[mysqldump_other]组。
--no-defaults 不要读取任何选项文件。如果由于从选项文件中读取未知选项而导致程序启动失败,则可以使用--no-defaults来防止读取它们。
  • exception 是在所有情况下都读取.mylogin.cnf文件(如果存在)。这样即使在使用--no-defaults的情况下,也可以通过比命令行更安全的方式指定密码。 (.mylogin.cnf由mysql_config_editorUtil 创建。请参见第 4.6.6 节“ mysql_config_editor-MySQL 配置 Util”。)
--print-defaults 打印程序名称及其从选项文件中获取的所有选项。

DDL 选项

DDL(Data definition language)
mysqldump的使用场景包括设置一个全新的 MySQL 实例(包括数据库 table),以及用现有数据库和 table 替换现有实例中的数据。通过以下选项,您可以通过对转储文件中的各种 DDL 语句进行编码,来指定还原转储时要拆除和设置的内容:

Option Name Description
--add-drop-database 在每个CREATE DATABASE语句之前写一个DROP DATABASE语句。此选项通常与--all-databases或--databases选项结合使用,因为除非指定了其中一个选项,否则不会写入CREATE DATABASE语句。
--add-drop-table 在每个CREATE TABLE语句之前写一个DROP TABLE语句。
--add-drop-trigger 在每个CREATE TRIGGER语句之前写一个DROP TRIGGER语句。
--all-tablespaces , -Y 向 table 转储添加创建NDBtable 使用的任何 table 空间所需的所有 SQL 语句。否则,此信息未包含在mysqldump的输出中。该选项当前仅与 NDB 群集 table 相关,MySQL 5.7 不支持该 table。
--no-create-db , -n 如果指定了--databases或--all-databases选项,则禁止输出中包含的CREATE DATABASE语句。
--no-create-info , -t 不要写创建每个转储 table 的CREATE TABLE语句。
  • 注意:此选项不排除从mysqldump输出创建日志文件组或 table 空间的语句;但是,您可以为此使用--no-tablespaces选项。
--no-tablespaces , -y 此选项禁止输出mysqldump中的所有创建日志文件组和CREATE TABLESPACE语句。
--replace 写REPLACE条语句而不是INSERT条语句。

调试选项

以下选项可打印调试信息,将调试信息编码在转储文件中,或者使转储操作 continue 进行,而不考虑潜在的问题:

Option Name Description
--allow-keywords 允许创建作为关键字的列名。这通过在每个列名前面加上 table 名来起作用。
--comments , -i 在转储文件中写入其他信息,例如程序版本,服务器版本和主机。默认情况下启用此选项。要取消显示此附加信息,请使用--skip-comments。
--debug[=debug_options] , -# [debug_options] 编写调试日志。典型的“debug_options”字符串是d:t:o,file_name。默认值为d:t:o,/tmp/mysqldump.trace。
  • 仅当使用WITH_DEBUG构建 MySQL 时,此选项才可用。使用此选项不是构建 Oracle 提供的 MySQL 发行版二进制文件。
--debug-check 程序退出时,打印一些调试信息。
  • 仅当使用WITH_DEBUG构建 MySQL 时,此选项才可用。使用此选项不是构建 Oracle 提供的 MySQL 发行版二进制文件。
--debug-info 程序退出时,打印调试信息以及内存和 CPU 使用情况统计信息。
  • 仅当使用WITH_DEBUG构建 MySQL 时,此选项才可用。使用此选项不是构建 Oracle 提供的 MySQL 发行版二进制文件。
--dump-date 如果提供了--comments选项,则mysqldump在以下格式的转储末尾生成 Comments:
-- Dump completed on DATE

但是,即使数据相同,该日期也会导致在不同时间获取的转储文件看起来不同。 --dump-date和--skip-dump-date控制是否将日期添加到 Comment 中。默认值为--dump-date(在 Comments 中包括日期)。 --skip-dump-date禁止日期打印。

--force , -f 忽略所有错误;即使在 table 转储期间发生 SQL 错误,也要 continue 操作。

此选项的一种用法是,即使mysqldump遇到由于定义引用已被删除的 table 而变得无效的视图,也使它们 continue 执行。如果没有--force,则mysqldump退出并显示错误消息。使用--force时,mysqldump将输出错误消息,但也会将包含视图定义的 SQLComments 写入转储输出并 continue 执行。

  • 如果还提供--ignore-error选项以忽略特定错误,则--force优先。
--log-error=file_name 通过将警告和错误附加到命名文件来记录它们。默认为不记录日志。
--skip-comments 请参阅--comments选项的说明。
--verbose , -v 详细模式。打印有关程序功能的更多信息。

帮助选项

以下选项显示有关mysqldump命令本身的信息。

Option Name Description
--help , -? 显示帮助消息并退出。
--version , -V 显示版本信息并退出。

国际化选项

以下选项更改了mysqldump命令以本国语言设置 table 示字符数据的方式:

Option Name Description
--character-sets-dir=dir_name 字符集的安装目录。
--default-character-set=charset_name 使用* charset_name *作为默认字符集。(如果未指定字符集,则mysqldump使用utf8。)
--no-set-names , -N 关闭--set-charset设置,与指定--skip-set-charset相同。
--set-charset 将SET NAMES default_character_set写入输出。默认情况下启用此选项。要取消显示SET NAMES语句,请使用--skip-set-charset。

集群复制选项

mysqldump 命令通常用于在复制配置中的从属服务器上创建空实例或包含数据的实例。以下选项适用于在复制主服务器和从属服务器上转储和还原数据:

Option Name Description
--apply-slave-statements 对于使用“--dump-slave”选项生成的从属转储,请在更改为主语句之前添加“STOP SLAVE”语句,并在输出末尾添加“START SLAVE”语句。
--delete-master-logs 在主复制服务器上,执行转储操作后,通过向服务器发送清除二进制日志语句来删除二进制日志。此选项自动启用“--master-data”。
--dump-slave[=value] 此选项与“--master-data”相似,不同之处在于它用于转储复制从服务器以生成转储文件,该转储文件可用于将另一台服务器设置为与转储服务器具有相同主服务器的从服务器。它使转储输出包含更改为主语句,该语句指示转储的从属主机的二进制日志坐标(文件名和位置)。 更改为主语句从显示从站状态输出读取Relay_Master_Log_File和Exec_Master_Log_Pos的值,并将它们分别用于MASTER_LOG_FILE和MASTER_LOG_POS。这些是从属服务器应开始复制的主服务器坐标。
  • 注意:已执行的中继日志中的事务 Sequences 不一致会导致使用错误的位置。
  • --dump-slave导致使用主节点的坐标,而不是转储服务器的坐标,就像--master-data选项一样。另外,指定此选项会使--master-data选项被覆盖(如果使用),并被有效地忽略。
  • 如果要应用转储的服务器使用gtid_mode=ON和MASTER_AUTOPOSITION=1,则不应使用此选项。
  • 选项值的处理方式与--master-data相同(不设置值或设置 1 导致将CHANGE MASTER TO语句写入转储,设置 2 导致将语句写入但用 SQLComments 括起来),其作用与--master-data in 相同。启用或禁用其他选项以及如何处理锁定的术语。
  • 此选项使mysqldump在转储之前停止从 SQL 线程,然后在转储之后重新启动。
  • 结合--dump-slave,也可以使用--apply-slave-statements和--include-master-host-port选项。
--include-master-host-port 对于使用--dump-slave选项生成的从属转储中的更改为主语句,请添加MASTER_HOST和MASTER_PORT选项作为从属主服务器的主机名和 TCP/IP 端口号。
--master-data[=value] 使用此选项转储主复制服务器以生成转储文件,该转储文件可用于将另一台服务器设置为主服务器的从属服务器。它使转储输出包含更改为主语句,该语句指示转储服务器的二进制日志坐标(文件名和位置)。这些是将转储文件加载到从属服务器后,从属服务器应从其开始复制的主服务器坐标。
  1. 如果选项值为 2,则更改为主语句被写为 SQLComments,因此仅提供信息;重新加载转储文件时,它无效。
  2. 如果选项值为 1,则该语句不作为 Comments 写入,并在重新加载转储文件时生效。
  3. 如果未指定选项值,则默认值为 1.
  • 此选项需要RELOAD特权,并且必须启用二进制日志。
  • “--master-data”选项自动关闭“--lock-tables”。除非也指定了“--single-transaction”,否则它也会打开“--lock-all-tables”,在这种情况下,转储开始时仅在短时间内获取了全局读锁定。在所有情况下,对日志的任何操作都会在转储的确切 Moment 发生。
  • 也可以通过使用“--dump-slave”选项转储主服务器的现有从属服务器来设置从属服务器,该选项将覆盖“--master-data”并导致如果同时使用这两个选项,则忽略它。
--set-gtid-purged=value 通过指示是否向输出添加“SET @@GLOBAL.gtid_purged”语句,此选项可以控制写入转储文件的全局事务 ID(GTID)信息。此选项还可能导致将语句写入输出,从而在重新加载转储文件时禁用二进制日志记录。

下面列表显示了允许的选项值。默认值为AUTO

Value Meaning
OFF 在输出中不添加SET语句。
ON 在输出中添加SET语句。如果未在服务器上启用 GTID,则会发生错误。
AUTO 如果在服务器上启用了 GTID,则在输出中添加SET语句。

来自使用基于 GTID 的复制的服务器的部分转储需要指定“--set-gtid-purged={ON|OFF}”选项。如果打算仅使用转储服务器中的某些数据来部署新的复制从属,请使用ON。如果要通过在拓扑中复制 table 来修复 table,请使用OFF。如果要在不相交的复制拓扑之间复制 table 并将保留该 table,请使用OFF。

重新加载转储文件时,“--set-gtid-purged”选项对二进制日志记录有以下影响:

  1. --set-gtid-purged=OFF:SET @@SESSION.SQL_LOG_BIN=0;未添加到输出中。
  2. --set-gtid-purged=ON:SET @@SESSION.SQL_LOG_BIN=0;已添加到输出中。
  3. 如果要备份的服务器上启用了 GTID,则“--set-gtid-purged=AUTO:SET @@SESSION.SQL_LOG_BIN=0;”将添加到输出中(即AUTO评估为ON)。
  • 注意:如果转储文件包含系统 table,则不建议在服务器(gtid_mode=ON)上启用 GTID 时加载转储文件。 mysqldump为使用非事务 MyISAM 存储引擎的系统 table 发出 DML 指令,并且在启用 GTID 时不允许使用此组合。还应注意,将一个启用了 GTID 的服务器中的转储文件加载到另一个启用了 GTID 的服务器中,会导致生成不同的事务标识符。

格式化选项

以下选项指定如何 table 示整个转储文件或转储文件中的某些类型的数据。它们还控制是否将某些可选信息写入转储文件:

Option Name Description
--compact 产生更紧凑的输出。此选项启用--skip-add-drop-table,--skip-add-locks,--skip-comments,--skip-disable-keys和--skip-set-charset选项。
--compatible=name 产生与其他数据库系统或更旧的 MySQL 服务器更兼容的输出。 * name *的值可以是ansi,mysql323,mysql40,postgresql,oracle,mssql,db2,maxdb,no_key_options,no_table_options或no_field_options。要使用多个值,请用逗号分隔。这些值与设置服务器 SQL 模式的相应选项的含义相同。参见第 5.1.10 节“服务器 SQL 模式”。
  • 此选项不保证与其他服务器的兼容性。它仅启用当前可用于使转储输出更兼容的那些 SQL 模式值。例如,--compatible=oracle不会将数据类型 Map 到 Oracle 类型,也不会使用 OracleComments 语法。
--complete-insert , -c 使用包含列名的完整INSERT语句。
--create-options 在CREATE TABLE语句中包括所有特定于 MySQL 的 table 选项。
--fields-terminated-by=... ,

--fields-enclosed-by=... , --fields-optionally-enclosed-by=... , --fields-escaped-by=... || 这些选项与--tab选项一起使用,并且与LOAD DATA的相应FIELDS子句具有相同的含义。

--hex-blob 使用十六进制 table 示法转储二进制列(例如'abc'变为0x616263)。与二进制字符集一起使用时,受影响的数据类型为BINARY,VARBINARY,BLOB类型,BIT,所有空间数据类型以及其他非二进制数据类型。
--lines-terminated-by=... 此选项与--tab选项一起使用,其含义与LOAD DATA的相应LINES子句相同。
--quote-names , -Q 引号内的引号标识符(例如数据库,table 和列名)。如果启用了ANSI_QUOTES SQL 模式,则标识符用"个字符引起来。默认情况下启用此选项。可以使用--skip-quote-names禁用它,但是应该在诸如--compatible之类的任何选项之后赋予该选项,该选项可以启用--quote-names。
--result-file=file_name , -r file_name 直接输出到命名文件。即使生成转储时发生错误,也将创建结果文件并覆盖其先前的内容。
  • 在 Windows 上应使用此选项,以防止将换行符\n字符转换为\r\n回车/换行符序列。
--tab=dir_name , -T dir_name 产生制 table 符分隔的文本格式数据文件。对于每个转储的 table,mysqldump创建一个tbl_name.sql文件,该文件包含创建 table 的CREATE TABLE语句,服务器写入一个tbl_name.txt文件,该文件包含其数据。选项值是在其中写入文件的目录。
  • 注意:仅当mysqldump与mysqld服务器在同一台计算机上运行时,才应使用此选项。由于服务器在您指定的目录中创建*.txt文件,因此该目录必须可由服务器写入,并且您使用的 MySQL 帐户必须具有FILE特权。由于mysqldump在同一目录中创建*.sql,因此它必须可由您的系统登录帐户写入。
  • 默认情况下,.txt数据文件在列值之间使用制 table 符和每行末尾的换行符进行格式化。可以使用--fields-xxx和--lines-terminated-by选项明确指定格式。
  • 列值将转换为--default-character-set选项指定的字符集。
--tz-utc 此选项使TIMESTAMP列可以在不同时区的服务器之间转储和重新加载。 mysqldump将其连接时区设置为 UTC,并将SET TIME_ZONE='+00:00'添加到转储文件中。如果没有此选项,则TIMESTAMP列将在源服务器和目标服务器本地的时区中转储并重新加载,如果服务器位于不同的时区中,这可能导致值更改。 --tz-utc还可以防止由于夏时制而导致的更改。 --tz-utc默认启用。要禁用它,请使用--skip-tz-utc。
--xml , -X 将转储输出写成格式正确的 XML。

NULL,'NULL'和空值 :对于名为“column_name”的列,在此选项生成的输出中,NULL值,空字符串和字符串值'NULL'相互区分,如下所示:

Value: XML Representation:
NULL(未知值) <field name="column_name" xsi:nil="true" />
''(空字符串) <field name="column_name"></field>
'NULL'(字符串值) <field name="column_name">NULL</field>
  • 使用--xml选项运行时,mysqlClient 端的输出也遵循上述规则。

mysqldump的 XML 输出包括 XML 名称空间,如下所示:

shell> mysqldump --xml -u root world City
<?xml version="1.0"?>
<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<database name="world">
<table_structure name="City">
<field Field="ID" Type="int(11)" Null="NO" Key="PRI" Extra="auto_increment" />
<field Field="Name" Type="char(35)" Null="NO" Key="" Default="" Extra="" />
<field Field="CountryCode" Type="char(3)" Null="NO" Key="" Default="" Extra="" />
<field Field="District" Type="char(20)" Null="NO" Key="" Default="" Extra="" />
<field Field="Population" Type="int(11)" Null="NO" Key="" Default="0" Extra="" />
<key Table="City" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="ID"
Collation="A" Cardinality="4079" Null="" Index_type="BTREE" Comment="" />
<options Name="City" Engine="MyISAM" Version="10" Row_format="Fixed" Rows="4079"
Avg_row_length="67" Data_length="273293" Max_data_length="18858823439613951"
Index_length="43008" Data_free="0" Auto_increment="4080"
Create_time="2007-03-31 01:47:01" Update_time="2007-03-31 01:47:02"
Collation="latin1_swedish_ci" Create_options="" Comment="" />
</table_structure>
<table_data name="City">
<row>
<field name="ID">1</field>
<field name="Name">Kabul</field>
<field name="CountryCode">AFG</field>
<field name="District">Kabol</field>
<field name="Population">1780000</field>
</row>

...

<row>
<field name="ID">4079</field>
<field name="Name">Rafah</field>
<field name="CountryCode">PSE</field>
<field name="District">Rafah</field>
<field name="Population">92020</field>
</row>
</table_data>
</database>
</mysqldump>

过滤器选项

以下选项控制将哪些类型的模式对象写入转储文件:按类别(例如触发器或事件);按类别。例如,按名称选择要转储的数据库和 table;甚至使用WHERE子句从 table 数据中过滤行:

Option Name Description
--all-databases , -A 转储所有数据库中的所有 table。这与使用--databases选项并在命令行上命名所有数据库相同。
--databases , -B 转储几个数据库。通常,mysqldump将命令行上的名字参数视为数据库名称,并将其后的名字视为 table 名称。使用此选项,它将所有名称参数视为数据库名称。每个新数据库之前的输出中都包含CREATE DATABASE和USE语句。
  • 此选项可用于转储INFORMATION_SCHEMA和performance_schema数据库,即使使用--all-databases选项也通常不会转储这些数据库。 (也可以使用--skip-lock-tables选项。)
--events , -E 在输出中包括转储数据库的事件计划程序事件。此选项需要这些数据库的EVENT特权。
  • 使用--events生成的输出包含CREATE EVENT条语句来创建事件。但是,这些语句不包括事件创建和修改时间戳记之类的属性,因此,当重新加载事件时,将使用等于重新加载时间的时间戳记来创建事件。
  • 如果需要使用原始时间戳记属性创建事件,请不要使用--events。相反,请使用对mysql数据库具有适当特权的 MySQL 帐户直接转储并重新加载mysql.eventtable 的内容。
--ignore-error=error[,error]... 忽略指定的错误。该选项值是一个逗号分隔的错误号列 table,指定了在mysqldump执行期间要忽略的错误。如果还提供--force选项以忽略所有错误,则--force优先。
--ignore-table=db_name.tbl_name 不要转储给定的 table,必须同时使用数据库名和 table 名指定该 table。要忽略多个 table,请多次使用此选项。此选项也可用于忽略视图。
--no-data , -d 不要写任何 table 行信息(即,不要转储 table 内容)。如果只想转储 table 的CREATE TABLE语句(例如,通过加载转储文件来创建 table 的空副本),这将很有用。
--routines , -R 在输出中包括用于转储数据库的存储例程(过程和函数)。此选项要求mysql.proctable 具有SELECT特权。
  • 使用--routines生成的输出包含CREATE PROCEDURE和CREATE FUNCTION语句以创建例程。但是,这些语句不包括例程创建和修改时间戳之类的属性,因此,在重新加载例程时,将使用等于重新加载时间的时间戳来创建例程。
  • 如果您需要使用原始时间戳属性创建例程,请不要使用--routines。相反,请使用对mysql数据库具有适当特权的 MySQL 帐户直接转储并重新加载mysql.proctable 的内容。
--tables 覆盖--databases或-B选项。 mysqldump将选项后的所有名称参数都视为 table 名称。
--triggers 在输出中包括每个转储 table 的触发器。默认情况下启用此选项。使用--skip-triggers禁用它。
  • 为了能够转储 table 的触发器,必须具有该 table 的TRIGGER权限。
  • 允许多个触发器。 mysqldump以激活 Sequences 转储触发器,以便在重新加载转储文件时,将以相同的激活 Sequences 创建触发器。但是,如果mysqldump转储文件包含具有相同触发事件和动作时间的 table 的多个触发器,则尝试将转储文件加载到不支持多个触发器的较旧服务器中时会发生错误。 (有关变通方法,请参见第 2.12.3 节“降级说明”;您可以将触发器转换为与旧服务器兼容。)
--where='where_condition' , -w 'where_condition' 仅转储由给定的WHERE条件选择的行。如果条件中包含空格或其他命令解释程序特有的字符,则必须在条件周围加引号。

示例:

--where="user='jimf'"
-w"userid>1"
-w"userid<1"

性能选项

以下选项与性能(尤其是还原操作)最相关。对于大型数据集,还原操作(处理转储文件中的INSERT语句)是最耗时的部分。当紧急需要快速恢复数据时,请提前计划和测试此阶段的性能。对于以小时为单位的还原时间,您可能更喜欢备用的备份和还原解决方案,例如“MySQL Enterprise Backup”来处理InnoDB以及混合使用的数据库。

  • 下一节的“事务选项”也会影响性能,主要是针对转储操作。
Option Name Description
--disable-keys , -K 对于每个 table,将INSERT语句用“/*!40000 ALTER TABLE tbl_name DISABLE KEYS */;”和“/*!40000 ALTER TABLE tbl_name ENABLE KEYS */;”语句括起来。这将加快加载转储文件的速度,因为在插入所有行之后都会创建索引。此选项仅对MyISAMtable 的非唯一索引有效。
--extended-insert , -e 使用包含多个VALUES列 table 的多行语法编写INSERT语句。这样可以生成较小的转储文件,并在重新加载文件时加快插入速度。
--insert-ignore 写INSERT IGNORE条语句而不是INSERT条语句。
--max-allowed-packet=value 用于 Client 端/服务器通信的缓冲区的最大大小。默认值为 24MB,最大为 1GB。
--net-buffer-length=value 用于 Client 端/服务器通信的缓冲区的初始大小。当创建多行INSERT语句时(与--extended-insert或--opt选项一起使用),mysqldump创建的行最多可达--net-buffer-length个字节。如果增加此变量,请确保 MySQL 服务器net_buffer_length系统变量的值至少为该值。
--opt 默认情况下启用的此选项是 --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset 的组合的简写形式。它提供了快速的转储操作并生成了一个转储文件,可以将其快速重新加载到 MySQL 服务器中。
  • 由于--opt选项默认情况下处于启用状态,因此您只需指定其相反选项--skip-opt即可关闭一些默认设置。有关有选择地启用或禁用受--opt影响的选项的子集的信息,请参见mysqldump 选项组的讨论。
--quick , -q 此选项对于转储大型 table 很有用。它强制mysqldump一次从服务器中检索 table 的行,而不是检索整个行集并将其缓冲在内存中,然后再将其写出。
--skip-opt 跳过“--opt”的选项组合

事务选项

以下选项权衡了转储操作的性能和导出数据的可靠性和一致性:

Option Name Description
--add-locks 用LOCK TABLES和UNLOCK TABLES语句包围每个 table 转储。重新装入转储文件时,这可以加快插入速度。参见第 8.2.4.1 节“优化 INSERT 语句”。
--flush-logs , -F 开始转储之前,请刷新 MySQL 服务器日志文件。此选项需要RELOAD特权。如果将此选项与--all-databases选项结合使用,则对于每个转储数据库,都会清除日志。使用--lock-all-tables,--master-data或--single-transaction时是一个 exception:在这种情况下,日志仅刷新一次,这与所有 table 都被带读取锁的平桌子锁定的 Moment 相对应。如果希望转储和日志刷新完全在同一时间发生,则应将--flush-logs与--lock-all-tables,--master-data或--single-transaction一起使用。
--flush-privileges 转储mysql数据库后,向转储输出中添加FLUSH PRIVILEGES语句。每当转储包含mysql数据库和依赖于mysql数据库中数据的任何其他数据库以进行正确还原时,都应使用此选项。
  • 注意:要从旧版本升级到 MySQL 5.7 或更高版本,请勿使用--flush-privileges。
--lock-all-tables , -x 锁定所有数据库中的所有 table。这是通过在整个转储期间获取全局读取锁定来实现的。此选项自动关闭--single-transaction和--lock-tables。
--lock-tables , -l 对于每个转储的数据库,在转储它们之前,锁定要转储的所有 table。这些 table 用READ LOCAL锁定,以允许在MyISAMtable 的情况下并发插入。对于InnoDB之类的事务 table,--single-transaction比--lock-tables更好,因为它根本不需要锁定 table。
  • 因为--lock-tables分别锁定每个数据库的 table,所以此选项不能保证转储文件中的 table 在数据库之间在逻辑上是一致的。不同数据库中的 table 可能以完全不同的状态转储。
  • 某些选项(例如--opt)会自动启用--lock-tables。如果要覆盖此选项,请在选项列 table 末尾使用--skip-lock-tables。
--no-autocommit 将每个转储 table 的INSERT语句包含在SET autocommit = 0和COMMIT语句内。
--order-by-primary 转储每个 table 的行,这些行按其主键或按其第一个唯一索引排序(如果存在这样的索引)。在转储要加载到InnoDBtable 中的MyISAMtable 时,这很有用,但会使转储操作花费更长的时间。
--shared-memory-base-name=name 在 Windows 上,共享内存名称,用于使用共享内存与本地服务器构建的连接。默认值为MYSQL。共享内存名称区分大小写。
  • 仅当在启用了shared_memory系统变量以支持共享内存连接的情况下启动服务器时,此选项才适用。
--single-transaction 此选项将事务隔离模式设置为REPEATABLE READ,并在转储数据之前向服务器发送START TRANSACTION SQL 语句。它仅对诸如InnoDB之类的事务 table 很有用,因为这样,它将在发出START TRANSACTION时转储数据库的一致状态,而不会阻塞任何应用程序。
  • 使用此选项时,应记住只有InnoDB个 table 以一致状态转储。例如,使用此选项时转储的任何MyISAM或MEMORYtable 可能仍会更改状态。

在处理--single-transaction转储时,为了确保有效的转储文件(正确的 table 内容和二进制日志坐标),没有其他连接应使用以下语句:ALTER TABLE,CREATE TABLE,DROP TABLE,RENAME TABLE,TRUNCATE TABLE。一致的读取并非与这些语句隔离开,因此在要转储的 table 上使用它们会导致mysqldump执行的SELECT检索 table 内容以获得错误的内容或失败。

  • “--single-transaction”选项和“--lock-tables”选项是互斥的,因为LOCK TABLES导致任何未决事务隐式提交。
  • 要转储大 table,请将--single-transaction选项与--quick选项结合使用。

选项组

  1. --opt”选项打开了一些设置,这些设置可以一起执行快速转储操作。所有这些设置默认情况下都是启用的,因为--opt默认情况下处于启用状态。因此,很少指定--opt。相反,您可以通过指定“--skip-opt”将这些设置作为一组关闭,可以通过稍后在命令行上指定关联的选项来选择性地重新启用某些设置。
  2. --compact”选项关闭了一些设置,这些设置控制是否在输出中显示可选的语句和 Comments。同样,您可以将此选项与其他选项一起使用,以重新启用某些设置,或者使用“--skip-compacttable”单将所有设置打开。

示例

  1. 备份整个数据库
    shell> mysqldump db_name > backup-file.sql
    
  2. 将转储文件重新加载到服务器中:
    shell> mysql db_name < backup-file.sql
    
  3. 重新加载转储文件的另一种方法:
    shell> mysql -e "source /path-to-backup/backup-file.sql" db_name
    
  4. mysqldump 通过将数据从一个 MySQL 服务器复制到另一个 MySQL 服务器来填充数据库也非常有用:
    shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name
    
  5. 您可以使用一个命令转储多个数据库
    shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql
    
  6. 转储所有数据库,请使用“--all-databases”选项:
    shell> mysqldump --all-databases > all_databases.sql
    
  7. 对于InnoDB表,mysqldump提供了一种进行在线备份的方法:【???】
    shell> mysqldump --all-databases --master-data --single-transaction > all_databases.sql
    
    • 此备份在转储开始时获取所有 table 的全局读取锁定(使用读锁刷新table)。一旦获取了此锁,便会读取二进制日志坐标并释放该锁。如果发出 FLUSH 语句时正在运行长时间的更新语句,则 MySQL 服务器可能会停滞,直到这些语句完成。之后,转储将变为无锁状态,并且不会干扰对 table 的读取和写入。如果 MySQL 服务器收到的更新语句很短(就执行时间而言),则即使有很多更新,初始锁定期也不会引起注意。
  8. 对于时间点恢复(也称为“前滚”),当您需要还原旧的备份并重放自该备份以来发生的更改时,旋转二进制日志或至少知道转储所对应的二进制日志坐标:【???】
    shell> mysqldump --all-databases --master-data=2 > all_databases.sql
    
    或:
    shell> mysqldump --all-databases --flush-logs --master-data=2 > all_databases.sql
    • “--master-data”和“--single-transaction”选项可以同时使用,如果 table 是使用InnoDB存储引擎存储的,则提供了一种方便的方法来使在线备份适合于在时间点恢复之前使用。
  • 要选择“--opt”的效果(某些功能除外),请对每个功能使用“--skip”选项。要禁用扩展插入和内存缓冲,请使用“--opt --skip-extended-insert --skip-quick”。 (实际上,“--skip-extended-insert --skip-quick”就足够了,因为“--opt”默认情况下处于启用状态。)【?】
  • 要为除索引禁用和 table 锁定之外的所有功能反转“--opt”,请使用“--skip-opt --disable-keys --lock-tables”。

mysqldump 的限制

  1. mysqldump默认不会转储INFORMATION_SCHEMAperformance_schemasys模式。要转储其中任何一个,请在命令行上明确命名它们。您也可以使用“--databases”选项为它们命名。对于“INFORMATION_SCHEMA”和“performance_schema”,还请使用“--skip-lock-tables”选项。【???】
  2. mysqldump不转储ndbinfo(NDB 群集信息数据库)。【???】
  3. mysqldump不转储InnoDB的“CREATE TABLESPACE”语句。
  4. 不建议从使用mysqldump进行的转储还原到启用了 GTID 的 MySQL 5.6.9 或更早版本的服务器。【使用 GTID 复制的限制】
  5. mysqldump包含用于为mysql数据库的转储重新创建“general_log”和“slow_query_logtable”的语句。日志 table 的内容不转储。

mysqlcheck:table 维护程序

mysqlcheck  Client端执行 table 维护:它检查,修复,优化或分析 table。

每个 table 都被锁定,因此在处理它时其他会话无法使用,尽管对于检查操作,该 table 仅用“READ”锁锁定。table 维护操作可能很耗时,特别是对于大型 table。

  • 如果使用“--databases”或“--all-databases”选项处理一个或多个数据库中的所有 table,则mysqlcheck的调用可能会花费很长时间。
  • mysqld服务器正在运行时必须使用mysqlcheck,这意味着您不必停止服务器即可执行 table 维护。


mysqlcheck以方便用户的方式使用 SQL 语句“CHECK TABLE”,“REPAIR TABLE”,“ANALYZE TABLE”和“OPTIMIZE TABLE”。它确定要用于该操作的语句,然后将这些语句发送到要执行的服务器。

  • 所有存储引擎不一定支持所有四个维护操作。在这种情况下,将显示错误消息。例如,如果test.t是MEMORYtable,则尝试检查它会产生以下结果:
    shell> mysqlcheck test t
    test.t
    note     : The storage engine for the table doesn't support check
    
  • 如果mysqlcheck无法修复 table,则应考虑“重建或修复 table 或索引”等手动 table 修复策略。例如InnoDBtable 就是这种情况,可以用“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”之后命名任何 table,或者如果使用“--databases”或“--all-databases”选项,则将检查整个数据库。


mysqlcheck与其他 Client 端程序相比具有特殊功能。可通过重命名二进制文件来更改检查 table(--check)的默认行为。如果要使用默认情况下修复 table 的工具,则应仅复制一个名为“_mysqlrepair”的mysqlcheck,或构建一个名为“mysqlrepair”的符号链接,如果调用“mysqlrepair”,它将修复 table。

下表中显示的名称可用于更改mysqlcheck默认行为:
Command Meaning
mysqlrepair 默认选项是--repair
mysqlanalyze 默认选项是--analyze
mysqloptimize 默认选项是--optimize


mysqlcheck 支持以下选项,可以在命令行或配置文件的[mysqlcheck][client]组中指定这些选项:

Option Name Description Introduced Deprecated
--all-databases 检查所有数据库中的所有 table
--all-in-1 对每个数据库执行一个语句,该语句命名该数据库中的所有 table
--analyze 分析 table
--auto-repair 如果检查 table 已损坏,请自动修复它
--bind-address 使用指定的网络接口连接到 MySQL Server
--character-sets-dir 字符集的安装目录
--check 检查 table 中的错误
--check-only-changed 仅检查自上次检查以来已更改的 table
--check-upgrade 使用 FOR UPGRADE 选项调用 CHECK TABLE
--compress 压缩 Client 端和服务器之间发送的所有信息
--databases 将所有参数解释为数据库名称
--debug 编写调试日志
--debug-check 程序退出时打印调试信息
--debug-info 程序退出时打印调试信息,内存和 CPU 统计信息
--default-auth 身份验证插件使用
--default-character-set 指定默认字符集
--defaults-extra-file 除常规选项文件外,还读取命名的选项文件
--defaults-file 只读命名的选项文件
--defaults-group-suffix 选项组后缀值
--enable-cleartext-plugin 启用明文身份验证插件 5.7.10
--extended 检查和维修 table
--fast 仅检查未正确关闭的 table
--fix-db-names 将数据库名称转换为 5.1 格式 Yes
--fix-table-names 将 table 名称转换为 5.1 格式 Yes
--force 即使发生 SQL 错误,也要 continue
--get-server-public-key 从服务器请求 RSA 公钥 5.7.23
--help 显示帮助信息并退出
--host MySQL 服务器所在的主机
--login-path 从.mylogin.cnf 中读取登录路径选项
--medium-check 进行比--extended 操作更快的检查
--no-defaults 不读取选项文件
--optimize 优化 table
--password 连接服务器时使用的密码
--pipe 使用命名管道连接到服务器(仅 Windows)
--plugin-dir 安装插件的目录
--port 用于连接的 TCP/IP 端口号
--print-defaults 打印默认选项
--protocol 使用的传输协议
--quick 最快的检查方法
--repair 执行修复,可以修复几乎所有东西,除了不是唯一的唯一键
--secure-auth 不要以旧(4.1 之前)格式向服务器发送密码 Yes
--server-public-key-path 包含 RSA 公钥的文件的路径名 5.7.23
--shared-memory-base-name 共享内存连接的共享内存名称(仅 Windows)
--silent 静默模式
--skip-database 从执行的操作中忽略此数据库
--socket Unix 套接字文件或 Windows 命名管道使用
--ssl 启用连接加密
--ssl-ca 包含受信任的 SSL 证书颁发机构列 table 的文件
--ssl-capath 包含受信任的 SSL 证书颁发机构证书文件的目录
--ssl-cert 包含 X.509 证书的文件
--ssl-cipher 连接加密的允许密码
--ssl-crl 包含证书吊销列 table 的文件
--ssl-crlpath 包含证书吊销列 table 文件的目录
--ssl-key 包含 X.509 密钥的文件
--ssl-mode 与服务器连接的所需安全状态 5.7.11
--ssl-verify-server-cert 根据服务器证书的通用名身份验证主机名
--tables 覆盖--databases 或-B 选项
--tls-version 允许的 TLS 协议进行加密连接 5.7.10
--use-frm 对于 MyISAMtable 的修复操作
--user 连接服务器时使用的 MySQL 用户名
--verbose Verbose mode
--version 显示版本信息并退出
--write-binlog 将 ANALYZE,OPTIMIZE,REPAIR 语句记录到二进制日志中。 --skip-write-binlog 将 NO_WRITE_TO_BINLOG 添加到这些语句

mysqlimport:一个数据导入程序

mysqlimportClient 端为“LOAD DATA” SQL语句提供了命令行界面。 mysqlimport的大多数选项直接对应于LOAD DATA语法的子句。

调用mysqlimport:

shell> mysqlimport [options] db_name textfile1 [textfile2 ...]
  • 对于在命令行上命名的每个文本文件,mysqlimport将从文件名中删除所有文件后缀,并使用其结果作为要将文件内容导入到的 table 的名称。
    例如,名为“patient.txt”,“patient.text”和“patient”的文件都将导入到名为“patient”的 table 中。


mysqlimport 选项:

Option Name Description Introduced Deprecated
--bind-address 使用指定的网络接口连接到 MySQL Server
--columns 此选项以逗号分隔的列名列 table 作为其值
--compress 压缩 Client 端和服务器之间发送的所有信息
--debug 编写调试日志
--debug-check 程序退出时打印调试信息
--debug-info 程序退出时打印调试信息,内存和 CPU 统计信息
--default-auth 身份验证插件使用
--default-character-set 指定默认字符集
--defaults-extra-file 除常规选项文件外,还读取命名的选项文件
--defaults-file 只读命名的选项文件
--defaults-group-suffix 选项组后缀值
--delete 导入文本文件之前清空 table
--enable-cleartext-plugin 启用明文身份验证插件 5.7.10
--fields-enclosed-by 此选项的含义与 LOAD DATA 的相应子句相同
--fields-escaped-by 此选项的含义与 LOAD DATA 的相应子句相同
--fields-optionally-enclosed-by 此选项的含义与 LOAD DATA 的相应子句相同
--fields-terminated-by 此选项的含义与 LOAD DATA 的相应子句相同
--force 即使发生 SQL 错误,也要 continue
--get-server-public-key 从服务器请求 RSA 公钥 5.7.23
--help 显示帮助信息并退出
--host MySQL 服务器所在的主机
--ignore 请参阅--replace 选项的描述
--ignore-lines 忽略数据文件的前 N 行
--lines-terminated-by 此选项的含义与 LOAD DATA 的相应子句相同
--local 从 Client 端主机本地读取 Importing 文件
--lock-tables 在处理任何文本文件之前,锁定所有 table 以进行写入
--login-path 从.mylogin.cnf 中读取登录路径选项
--low-priority 加载 table 时使用 LOW_PRIORITY
--no-defaults 不读取选项文件
--password 连接服务器时使用的密码
--pipe 使用命名管道连接到服务器(仅 Windows)
--plugin-dir 安装插件的目录
--port 用于连接的 TCP/IP 端口号
--print-defaults 打印默认选项
--protocol 使用的传输协议
--replace --replace 和--ignore 选项控制 Importing 行的处理,这些 Importing 行复制唯一键值上的现有行
--secure-auth 不要以旧(4.1 之前)格式向服务器发送密码 Yes
--server-public-key-path 包含 RSA 公钥的文件的路径名 5.7.23
--shared-memory-base-name 共享内存连接的共享内存名称(仅 Windows)
--silent 仅在发生错误时产生输出
--socket Unix 套接字文件或 Windows 命名管道使用
--ssl 启用连接加密
--ssl-ca 包含受信任的 SSL 证书颁发机构列 table 的文件
--ssl-capath 包含受信任的 SSL 证书颁发机构证书文件的目录
--ssl-cert 包含 X.509 证书的文件
--ssl-cipher 连接加密的允许密码
--ssl-crl 包含证书吊销列 table 的文件
--ssl-crlpath 包含证书吊销列 table 文件的目录
--ssl-key 包含 X.509 密钥的文件
--ssl-mode 与服务器连接的所需安全状态 5.7.11
--ssl-verify-server-cert 根据服务器证书的通用名身份验证主机名
--tls-version 允许的 TLS 协议进行加密连接 5.7.10
--use-threads 并行文件加载的线程数
--user 连接服务器时使用的 MySQL 用户名
--verbose 详细信息
--version 显示版本信息并退出


示例:

shell> mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test
shell> ed
a
100     Max Sydow
101     Count Dracula
.
w imptest.txt
32
q
shell> od -c imptest.txt
0000000   1   0   0  \t   M   a   x       S   y   d   o   w  \n   1   0
0000020   1  \t   C   o   u   n   t       D   r   a   c   u   l   a  \n
0000040
shell> mysqlimport --local test imptest.txt
test.imptest: Records: 2  Deleted: 0  Skipped: 0  Warnings: 0
shell> mysql -e 'SELECT * FROM imptest' test
+------+---------------+
| id   | n             |
+------+---------------+
|  100 | Max Sydow     |
|  101 | Count Dracula |
+------+---------------+

mysqlpump:数据库备份程序

mysqldump 客户机实用程序执行逻辑备份,生成一组SQL语句,可以执行这些语句来重现原始数据库对象定义和表数据。

它转储一个或多个MySQL数据库,以便备份或传输到另一个SQL服务器。


mysqlpump功能包括:【???】

  1. 并行处理数据库以及数据库中的对象,以加快转储过程
  2. 更好地控制要转储的数据库和数据库对象(table,存储的程序,用户帐户)
  3. 将用户帐户作为帐户 Management 语句(CREATE USER,GRANT)而不是作为mysql系统数据库的插入内容转储
  4. 创建压缩输出的能力
  5. 进度指示器(值是估计值)
  6. 对于转储文件重新加载,通过在插入行后添加索引,可以更快地为InnoDBtable 创建辅助索引


mysqldump至少对转储 table 具有SELECT权限,对转储视图至少具有SHOW VIEW权限,对于转储触发器具有TRIGGER权限,如果不使用“--single-transaction”选项则需要LOCK TABLES权限【允许使用显式的LOCK TABLES语句来锁定您具有SELECT权限的 table。包括使用写锁,可以防止其他会话读取锁定的 table。】。转储用户定义需要mysql系统数据库上的SELECT特权。如选项说明中所述,某些选项可能需要其他特权。

  • --single-transaction:此选项会将隔离级别设置为:REPEATABLE READ。并且随后再执行一条START TRANSACTION语句,让整个数据在dump过程中保证数据的一致性,这个选项对InnoDB的数据表很有用,且不会锁表。但是这个不能保证MyISAM表和MEMORY表的数据一致性。

要重新加载转储文件,您必须具有执行该文件所包含的语句所需的特权,例如由这些语句创建的对象的相应CREATE权限。

  • 在 Windows 上使用 PowerShell 通过输出重定向创建的转储将创建具有 UTF-16 编码的文件:
    shell> mysqldump [options] > dump.sql
    
    但是,由于不允许将 UTF-16 作为连接字符集(请参见不允许的 Client 字符集),因此转储文件将无法正确加载。要变通解决此问题,请使用“--result-file”选项,该选项以 ASCII 格式创建输出:
    shell> mysqldump [options] --result-file=dump.sql
    

mysqlpump 调用语法

  1. 默认情况下,mysqlpump转储所有数据库(在 mysqlpump 限制情况注明了某些例外)。要明确指定此行为,请使用“--all-databases”选项:
    shell> mysqlpump --all-databases
    
  2. 转储单个数据库或该数据库中的某些 table,请在命令行上命名该数据库,还可以选择后面加上 table 名:
    shell> mysqlpump db_name
    shell> mysqlpump db_name tbl_name1 tbl_name2 ...
    
  3. 要将所有名称参数都视为数据库名称,请使用“--databases”选项:
    shell> mysqlpump --databases db_name1 db_name2 ...
    
  4. 默认情况下,即使您转储包含授权 table 的mysql系统数据库,mysqlpump也不转储用户帐户定义。要将授权 table 内容以“CREATE USER”和“GRANT”语句的形式作为逻辑定义转储,请使用“--users”选项并禁止所有数据库转储:
    shell> mysqlpump --exclude-databases=% --users
    
    • 在前面的命令中,%是通配符,它与--exclude-databases选项的所有数据库名称匹配。
  • 重新加载转储文件,请执行其中包含的语句。例如,使用mysqlClient 端:
    shell> mysqlpump [options] > dump.sql
    shell> mysql < dump.sql
    

mysqlpump 选项

mysqlpump支持以下选项,可以在命令行或配置文件的[mysqlpump][client]组中指定这些选项:

  • 在 MySQL 5.7.30 之前,mysqlpump读取“[mysql_dump]”组而不是“[mysqlpump]”;
Option Name Description Introduced Deprecated
--add-drop-database 在每个 CREATE DATABASE 语句之前添加 DROP DATABASE 语句
--add-drop-table 在每个 CREATE TABLE 语句之前添加 DROP TABLE 语句
--add-drop-user 在每个 CREATE USER 语句之前添加 DROP USER 语句
--add-locks 用 LOCK TABLES 和 UNLOCK TABLES 语句包围每个 table 转储
--all-databases 转储所有数据库
--bind-address 使用指定的网络接口连接到 MySQL Server
--character-sets-dir 字符集的安装目录
--complete-insert 使用包含列名称的完整 INSERT 语句
--compress 压缩 Client 端和服务器之间发送的所有信息
--compress-output 输出压缩算法
--databases 将所有名称参数解释为数据库名称
--debug 编写调试日志
--debug-check 程序退出时打印调试信息
--debug-info 程序退出时打印调试信息,内存和 CPU 统计信息
--default-auth 身份验证插件使用
--default-character-set 指定默认字符集
--default-parallelism 并行处理的默认线程数
--defaults-extra-file 除常规选项文件外,还读取命名的选项文件
--defaults-file 只读命名的选项文件
--defaults-group-suffix 选项组后缀值
--defer-table-indexes 对于重新加载,将索引创建推迟到加载 table 行之后
--events 从转储的数据库中转储事件
--exclude-databases 从转储中排除的数据库
--exclude-events 从转储中排除的事件
--exclude-routines 从转储中排除的例程
--exclude-tables 从转储中排除的 table
--exclude-triggers 触发从转储中排除
--exclude-users 从转储中排除的用户
--extended-insert 使用多行 INSERT 语法
--get-server-public-key 从服务器请求 RSA 公钥 5.7.23
--help 显示帮助信息并退出
--hex-blob 使用十六进制 table 示法转储二进制列
--host MySQL 服务器所在的主机
--include-databases 转储中包含的数据库
--include-events 转储中包含的事件
--include-routines 转储中包含的例程
--include-tables 转储中包含的 table
--include-triggers 触发包含在转储中
--include-users 要包含在转储中的用户
--insert-ignore 编写 INSERT IGNORE 而不是 INSERT 语句
--log-error-file 将警告和错误附加到命名文件
--login-path 从.mylogin.cnf 中读取登录路径选项
--max-allowed-packet 发送到服务器或从服务器接收的最大数据包长度
--net-buffer-length TCP/IP 和套接字通信的缓冲区大小
--no-create-db 不要写 CREATE DATABASE 语句
--no-create-info 不要编写重新创建每个转储 table 的 CREATE TABLE 语句
--no-defaults 不读取选项文件
--parallel-schemas 指定模式处理并行性
--password 连接服务器时使用的密码
--plugin-dir 安装插件的目录
--port 用于连接的 TCP/IP 端口号
--print-defaults 打印默认选项
--protocol 使用的传输协议
--replace 编写 REPLACE 语句而不是 INSERT 语句
--result-file 直接输出到给定文件
--routines 从转储的数据库中转储存储的例程(过程和函数)
--secure-auth 不要以旧(4.1 之前)格式向服务器发送密码
--server-public-key-path 包含 RSA 公钥的文件的路径名 5.7.23
--set-charset 将 SET NAMES default_character_set 添加到输出
--set-gtid-purged 是否将 SET @@ GLOBAL.GTID_PURGED 添加到输出 5.7.18
--single-transaction 在单个事务中转储 table
--skip-definer 从视图和存储程序 CREATE 语句中忽略 DEFINER 和 SQL SECURITY 子句  
--skip-dump-rows 不要转储 table 行
--socket Unix 套接字文件或 Windows 命名管道使用
--ssl 启用连接加密
--ssl-ca 包含受信任的 SSL 证书颁发机构列 table 的文件
--ssl-capath 包含受信任的 SSL 证书颁发机构证书文件的目录
--ssl-cert 包含 X.509 证书的文件
--ssl-cipher 连接加密的允许密码
--ssl-crl 包含证书吊销列 table 的文件
--ssl-crlpath 包含证书吊销列 table 文件的目录
--ssl-key 包含 X.509 密钥的文件
--ssl-mode 与服务器连接的所需安全状态 5.7.11
--ssl-verify-server-cert 根据服务器证书的通用名身份验证主机名
--tls-version 允许的 TLS 协议进行加密连接 5.7.10
--triggers 每个转储 table 的转储触发器
--tz-utc 添加 SET TIME_ZONE ='00:00'来转储文件
--user 连接服务器时使用的 MySQL 用户名
--users 转储用户帐户
--version 显示版本信息并退出
--watch-progress 显示进度指示器

mysqlpump 对象选择

mysqlpump 具有一组包含和排除选项,它们可以过滤几种对象类型并提供对要转储哪些对象的灵活控制:

  1. --include-databases和--exclude-databases:适用于数据库及其中的所有对象
  2. --include-tables和--exclude-tables:适用于表格。除非给出特定于触发器的选项,否则这些选项还会影响与 table 关联的触发器。
  3. --include-triggers和--exclude-triggers:适用于触发器
  4. --include-routines和--exclude-routines适用于存储过程和函数。如果例程选项与存储过程名称匹配,则它也与相同名称的存储函数匹配。
  5. --include-events和--exclude-events适用于事件计划程序事件
  6. --include-users和--exclude-users适用于用户帐户
  • 任何包含或排除选项都可以多次给出。效果是累加的。这些选项的 Sequences 无关紧要。
  • 每个包含和排除选项的值是相应对象类型的逗号分隔名称的列 table。例如:
--exclude-databases=test,world
--include-tables=customer,invoice


对象名称中允许使用通配符:

  1. %”匹配零个或多个字符的任何序列。
  2. _”匹配任何单个字符。

例如,“--include-tables=t%,__tmp”匹配以t开头的所有 table 名和以tmp结尾的所有五个字符的 table 名。


包含和排除选项的相互作用如下:

  1. 默认情况下,没有任何包含或排除选项,mysqlpump转储所有数据库(在mysqlpump 限制情况中注明了某些例外)。
  2. 如果在没有排除选项的情况下给出了包含选项,则仅转储指定为“included”的对象。
  3. 如果在没有包含选项的情况下给出了排除选项,则所有被指定为被排除对象的对象都将被转储。
  4. 如果给出了包含和排除选项,则不会转储所有指定为“排除”和未指定为“包括”的对象。所有其他对象将被转储。


如果要转储多个数据库,则可以通过用数据库名称限定对象名称来命名特定数据库中的 table,触发器和例程。以下命令:

shell> mysqlpump --include-databases=db1,db2 --exclude-tables=db1.t1,db2.t2

将转储数据库db1和db2,但不包括 tabledb1.t1和db2.t2:


以下选项提供了指定转储哪些数据库的替代方法:

  1. “--all-databases”选项转储所有数据库(在mysqlpump 限制情况中注明了某些例外)。这等效于完全不指定任何对象选项(默认的mysqlpump操作是转储所有内容)。
  2. “--include-databases=%”与“--all-databases”类似,但是选择所有数据库进行转储,即使是“--all-databases”的例外。
  3. “--databases”选项使mysqlpump将所有名称参数视为要转储的数据库名称。它等效于命名相同数据库的“--include-databases”选项。

mysqlpump 并行处理

mysqlpump可以使用并行性来实现并发处理。您可以选择数据库之间(同时转储多个数据库)和数据库内(同时转储给定数据库的多个对象)的并发性。

默认情况下,mysqlpump设置一个带有两个线程的队列。您可以创建其他队列并控制分配给每个队列的线程数,包括默认队列:

  • “--default-parallelism=N”指定用于每个队列的默认线程数。在没有此选项的情况下,“N”为 2。

默认队列始终使用默认线程数。除非另行指定,否则其他队列将使用默认线程数。

  • “--parallel-schemas=[N:]db_list”设置一个处理队列以转储“db_list”中命名的数据库,并可以选择指定该队列使用多少线程。“db_list”是用逗号分隔的数据库名称的列 table。如果 option 参数以N:开头,则队列使用“N”个线程。否则,“--default-parallelism”选项确定队列线程的数量。

“--parallel-schemas”选项的多个实例创建多个队列。


并行性的粒度是单个数据库对象。例如,不能使用多个线程并行转储单个 table。


示例:

  1. mysqlpump设置一个队列来处理db1和db2,另一个队列来处理db3,以及一个默认队列来处理所有其他数据库。所有队列使用两个线程:
    shell> mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3
    
  2. . . . . . .(同上)。所有队列都使用四个线程:
    shell> mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3
             --default-parallelism=4
    
  3. db1和db2的队列使用五个线程,db3的队列使用三个线程,默认队列使用两个线程的默认值:
    shell> mysqlpump --parallel-schemas=5:db1,db2 --parallel-schemas=3:db3
    


  • 作为一种特殊情况,具有“--default-parallelism=0”和没有“--parallel-schemas”选项的mysqlpump作为单线程进程运行,并且不创建队列。

mysqlpump 限制情况

  1. mysqlpump默认不会转储“INFORMATION_SCHEMA”,“performance_schema”,“ndbinfo”或“sys”模式。要转储其中任何一个,请在命令行上明确命名它们。您也可以使用“--databases”或“--include-databases”选项来指定它们。
  2. mysqlpump不转储 InnoDB 的“CREATE TABLESPACE”语句。
  3. mysqlpump使用“CREATE USER”和“GRANT”语句以逻辑形式转储用户帐户(例如,当您使用“--include-users”或“--users”选项时)。因此,mysql系统数据库的转储默认情况下不包括包含用户定义的授权数据表:“user”,“db”,“tables_priv”,“columns_priv”,“procs_priv”或“proxies_priv”。要转储任何授权数据表,请命名mysql数据库,后跟表名:
shell> mysqlpump mysql user db ...

mysqlshow:显示数据库、table和列信息

mysqlshow  Client端可用于快速查看存在哪些数据库,它们的 table 或 table 的列或索引。
  • mysqlshow为多个SQL“SHOW”语句提供了命令行界面。通过直接使用这些语句可以获得相同的信息。例如,您可以从mysqlClient 端程序中发布它们。


调用mysqlshow:

shell> mysqlshow [options] [db_name [tbl_name [col_name]]]
  1. 如果未提供数据库,则显示数据库名称列 table。
  2. 如果没有给出 table,则显示数据库中所有匹配的 table。
  3. 如果没有给出列,则显示 table 中所有匹配的列和列类型。
  • 输出仅显示您具有某些权限的那些数据库,table 或列的名称。
  • 如果最后一个参数包含 shell 或 SQL 通配符(“*”,“?”,“%”或“_”),则仅显示与通配符匹配的名称。
    如果数据库名称包含任何下划线,则应使用反斜杠对其进行转义(某些 Unix shell 需要两个下划线)以获取适当的 table 或列的列表。“*”和“?”字符转换为 SQL 的“%”和“_”通配符。
    当您尝试显示名称中带有“_”的 table 的列时,这可能会引起一些混乱,因为在这种情况下,mysqlshow仅显示与模式匹配的 table 名。通过在命令行上添加最后一个“%”作为单独的参数,可以轻松解决此问题。


mysqlshow支持以下选项,可以在命令行或选项文件的[mysqlshow][client]组中指定这些选项:

Option Name Description Introduced Deprecated
--bind-address 使用指定的网络接口连接到 MySQL Server
--compress 压缩 Client 端和服务器之间发送的所有信息
--count 显示每个 table 的行数
--debug 编写调试日志
--debug-check 程序退出时打印调试信息
--debug-info 程序退出时打印调试信息,内存和 CPU 统计信息
--default-auth 身份验证插件使用
--default-character-set 指定默认字符集
--defaults-extra-file 除常规选项文件外,还读取命名的选项文件
--defaults-file 只读命名的选项文件
--defaults-group-suffix 选项组后缀值
--enable-cleartext-plugin 启用明文身份验证插件 5.7.10
--get-server-public-key 从服务器请求 RSA 公钥 5.7.23
--help 显示帮助信息并退出
--host MySQL 服务器所在的主机
--keys 显示 table 索引
--login-path 从.mylogin.cnf 中读取登录路径选项
--no-defaults 不读取选项文件
--password 连接服务器时使用的密码
--pipe 使用命名管道连接到服务器(仅 Windows)
--plugin-dir 安装插件的目录
--port 用于连接的 TCP/IP 端口号
--print-defaults 打印默认选项
--protocol 使用的传输协议
--secure-auth 不要以旧(4.1 之前)格式向服务器发送密码 Yes
--server-public-key-path 包含 RSA 公钥的文件的路径名 5.7.23
--shared-memory-base-name 共享内存连接的共享内存名称(仅 Windows)
--show-table-type 显示 table 示 table 格类型的列
--socket Unix 套接字文件或 Windows 命名管道使用
--ssl 启用连接加密
--ssl-ca 包含受信任的 SSL 证书颁发机构列 table 的文件
--ssl-capath 包含受信任的 SSL 证书颁发机构证书文件的目录
--ssl-cert 包含 X.509 证书的文件
--ssl-cipher 连接加密的允许密码
--ssl-crl 包含证书吊销列 table 的文件
--ssl-crlpath 包含证书吊销列 table 文件的目录
--ssl-key 包含 X.509 密钥的文件
--ssl-mode 与服务器连接的所需安全状态 5.7.11
--ssl-verify-server-cert 根据服务器证书的通用名身份验证主机名
--status 显示有关每个 table 的其他信息
--tls-version 允许的 TLS 协议进行加密连接 5.7.10
--user 连接服务器时使用的 MySQL 用户名
--verbose Verbose mode
--version 显示版本信息并退出

mysqlslap:一个负载仿真 Client 端

mysqlslap 是一个诊断程序,旨在模拟 MySQL 服务器的 Client 端负载并报告每个阶段的时间。就像多个 Client 端正在访问服务器一样。


调用mysqlslap:

shell> mysqlslap [options]
  • 某些选项(例如“--create”或“--query”)使您可以指定包含 SQL 语句的字符串或包含语句的文件。
    如果指定文件,则默认情况下该文件每行必须包含一个语句。(也就是说,隐式语句定界符是换行符)
    使用“--delimiter”选项指定其他定界符,使您能够指定跨越多行的语句或将多条语句放在一行上。
  • 不能在文件中包含注释,mysqlslap不理解它们。


mysqlslap分三个阶段运行:

  1. 创建架构,table 以及可选的任何存储程序或数据以用于测试。此阶段使用单个 Client 端连接。
  2. 运行负载测试。此阶段可以使用许多 Client 端连接。
  3. 清理(断开连接,删除指定的table)。此阶段使用单个 Client 端连接。


示例:

  1. 提供您自己的“create”和“query”语句,可查询 50 个 Client 端,每个查询 200 个选择(在一行中输入命令):
    mysqlslap --delimiter=";"
      --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)"
      --query="SELECT * FROM a" --concurrency=50 --iterations=200
    
  2. 让mysqlslap用两个“INT”列和三个“VARCHAR”列的 table 构建查询 SQL 语句。使用五个 Client 端,每个 Client 端查询 20 次。不要创建 table 或插入数据(即,使用先前测试的架构和数据):
    mysqlslap --concurrency=5 --iterations=20
      --number-int-cols=2 --number-char-cols=3
      --auto-generate-sql
    
  3. 告诉程序从指定的文件中加载创建,插入和查询 SQL 语句,其中“create.sql”文件具有多个以“;”分隔的 table 创建语句和多个以“;”分隔的插入语句。“--query”文件将具有多个以“;”分隔的查询。运行所有装入语句,然后使用五个 Client 端(每个 Client 端五次)运行查询文件中的所有查询:
    mysqlslap --concurrency=5
      --iterations=5 --query=query.sql --create=create.sql
      --delimiter=";"
    


mysqlslap支持以下选项,可以在命令行或选项文件的[mysqlslap][client]组中指定这些选项:

Option Name Description Introduced Deprecated
--auto-generate-sql 文件中未提供或使用命令选项时自动生成 SQL 语句
--auto-generate-sql-add-autoincrement 将 AUTO_INCREMENT 列添加到自动生成的 table 中
--auto-generate-sql-execute-number 指定自动生成多少查询
--auto-generate-sql-guid-primary 将基于 GUID 的主键添加到自动生成的 table 中
--auto-generate-sql-load-type 指定测试负载类型
--auto-generate-sql-secondary-indexes 指定要添加到自动生成的 table 中的二级索引的数量
--auto-generate-sql-unique-query-number 自动测试生成多少个不同的查询
--auto-generate-sql-unique-write-number 为--auto-generate-sql-write-number 生成多少个不同的查询
--auto-generate-sql-write-number 每个线程要执行多少行插入
--commit 提交前要执行多少条语句
--compress 压缩 Client 端和服务器之间发送的所有信息
--concurrency 发出 SELECT 语句时要模拟的 Client 端数量
--create 包含用于创建 table 的语句的文件或字符串
--create-schema 运行测试的架构
--csv 生成以逗号分隔的值格式的输出
--debug 编写调试日志
--debug-check 程序退出时打印调试信息
--debug-info 程序退出时打印调试信息,内存和 CPU 统计信息
--default-auth 身份验证插件使用
--defaults-extra-file 除常规选项文件外,还读取命名的选项文件
--defaults-file 只读命名的选项文件
--defaults-group-suffix 选项组后缀值
--delimiter 在 SQL 语句中使用的定界符
--detach 在每条 N 条语句后分离(关闭并重新打开)每个连接
--enable-cleartext-plugin 启用明文身份验证插件
--engine 用于创建 table 的存储引擎
--get-server-public-key 从服务器请求 RSA 公钥 5.7.23
--help 显示帮助信息并退出
--host MySQL 服务器所在的主机
--iterations 运行测试的次数
--login-path 从.mylogin.cnf 中读取登录路径选项
--no-defaults 不读取配置文件
--no-drop 不要删除测试运行期间创建的任何架构
--number-char-cols 如果指定了--auto-generate-sql,则要使用的 VARCHAR 列数
--number-int-cols 如果指定了--auto-generate-sql,则要使用的 INT 列数
--number-of-queries 将每个 Client 端限制为大约此查询数量
--only-print 不要连接到数据库。 mysqlslap 只打印它会做的事情
--password 连接服务器时使用的密码
--pipe 使用命名管道连接到服务器(仅 Windows)
--plugin-dir 安装插件的目录
--port 用于连接的 TCP/IP 端口号
--post-query 包含要在测试完成后执行的语句的文件或字符串
--post-system 测试完成后使用 system()执行的字符串
--pre-query 包含要在运行测试之前执行的语句的文件或字符串
--pre-system 在运行测试之前使用 system()执行的字符串
--print-defaults 打印默认选项
--protocol 使用的传输协议
--query 包含用于检索数据的 SELECT 语句的文件或字符串
--secure-auth 不要以旧(4.1 之前)格式向服务器发送密码 Yes
--server-public-key-path 包含 RSA 公钥的文件的路径名 5.7.23
--shared-memory-base-name 共享内存连接的共享内存名称(仅 Windows)
--silent Silent mode
--socket Unix 套接字文件或 Windows 命名管道使用
--sql-mode 设置 Client 端会话的 SQL 模式
--ssl 启用连接加密
--ssl-ca 包含受信任的 SSL 证书颁发机构列 table 的文件
--ssl-capath 包含受信任的 SSL 证书颁发机构证书文件的目录
--ssl-cert 包含 X.509 证书的文件
--ssl-cipher 连接加密的允许密码
--ssl-crl 包含证书吊销列 table 的文件
--ssl-crlpath 包含证书吊销列 table 文件的目录
--ssl-key 包含 X.509 密钥的文件
--ssl-mode 与服务器连接的所需安全状态 5.7.11
--ssl-verify-server-cert 根据服务器证书的通用名身份验证主机名
--tls-version 允许的 TLS 协议进行加密连接 5.7.10
--user 连接服务器时使用的 MySQL 用户名
--verbose Verbose mode
--version 显示版本信息并退出