mysqldump 参数说明
mysqldump Ver 10.13 Distrib 5.7.39,适用于 Linux (x86_64)
版权所有 (c) 2000, 2022, Oracle 及其关联公司。
Oracle 是 Oracle Corporation 及/或其关联公司的注册商标。
其他名称可能是其各自所有者的商标。
转储 MySQL 数据库和表的结构和内容。
用法: mysqldump [选项] 数据库 [表]
或 mysqldump [选项] --databases [选项] DB1 [DB2 DB3...]
或 mysqldump [选项] --all-databases [选项]
默认选项按照以下顺序从以下文件中读取:
/etc/my.cnf /etc/mysql/my.cnf /apps/mysql/etc/my.cnf ~/.my.cnf
以下组将被读取: mysqldump client
以下选项可以作为第一个参数给出:
| 参数 | 说明 |
| --print-defaults | 打印程序参数列表并退出。 |
| --no-defaults | 不从任何选项文件中读取默认选项,除了登录文件。 |
| --defaults-file=# | 仅从给定文件#读取默认选项。 |
| --defaults-extra-file=# | 在全局文件读取后读取此文件。 |
| --defaults-group-suffix=# | 还可以读取通过连接(group, suffix)形成的组。 |
| --login-path=# | 从登录文件中读取此路径。 |
| -A, --all-databases | 转储所有数据库。这将与--databases选择所有数据库相同。 |
| -Y, --all-tablespaces | 转储所有表空间。 |
| -y, --no-tablespaces | 不转储任何表空间信息。 |
| --add-drop-database | 在每个创建之前添加一个 DROP DATABASE。 |
| --add-drop-table | 在每个创建之前添加一个 DROP TABLE。(默认为 on; 使用 --skip-add-drop-table 禁用。) |
| --add-drop-trigger | 在每个创建之前添加一个 DROP TRIGGER。 |
| --add-locks | 在 INSERT 语句周围添加锁。 (默认为 on; 使用 --skip-add-locks 禁用。) |
| --allow-keywords | 允许创建关键字列名。 |
| --apply-slave-statements | 在转储底部的 'CHANGE MASTER' 和 'START SLAVE' 前添加 'STOP SLAVE'。 |
| --bind-address=name | 绑定到的 IP 地址。 |
| --character-sets-dir=name | 字符集文件的目录。 |
| -i, --comments | 写入附加信息。 (默认为 on; 使用 --skip-comments 禁用。) |
| --compatible=name | 更改转储以与给定模式兼容。默认情况下,表以针对MySQL 优化的格式进行转储。合法模式为: ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_table_options、no_field_options。可以使用逗号分隔的多个模式。注意: 需要 MySQL 服务器版本 4.1.0 或更高。此选项在较早的服务器版本中将被忽略。 |
| --compatible=name | 更改转储以与给定模式兼容。默认情况下,表以针对MySQL 优化的格式进行转储。合法模式为: ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_table_options、no_field_options。可以使用逗号分隔的多个模式。注意: 需要 MySQL 服务器版本 4.1.0 或更高。此选项在较早的服务器版本中将被忽略。 |
| --compact | 提供更少冗长的输出(用于调试)。禁用结构注释和头/尾结构。启用选项 --skip-add-drop-table、--skip-add-locks、--skip-comments、--skip-disable-keys、--skip-set-charset。 |
| -c, --complete-insert | 使用完整的插入语句。 |
| -C, --compress | 在服务器/客户端协议中使用压缩。 |
| -a, --create-options | 包括所有 MySQL 特定的创建选项。 (默认为 on; 使用 --skip-create-options 禁用。) |
| -B, --databases | 转储多个数据库。注意用法的区别; 在这种情况下不提供表。所有名称参数都视为数据库名称。'USE db_name;' 将包含在输出中。 |
| -#, --debug[=#] | 这是非调试版本。捕获此并退出。 |
| --debug-check | 这是非调试版本。捕获此并退出。 |
| --debug-info | 这是非调试版本。捕获此并退出。 |
| --default-character-set=name | 设置默认字符集。 |
| --delete-master-logs | 备份后删除主服务器上的日志。这将自动启用 --master-data。 |
| -K, --disable-keys | 将 '/!40000 ALTER TABLE tb_name DISABLE KEYS /;' 和 '/!40000 ALTER TABLE tb_name ENABLE KEYS /;' 放入输出中。 (默认为 on; 使用 --skip-disable-keys 禁用。) |
| --dump-slave[=#] | 这会将主服务器的二进制日志位置和文件名附加到转储的数据输出中。将值设置为 1 将打印为转储的数据输出中的 CHANGE MASTER 命令;如果等于 2,则该命令将以注释符号前缀。此选项将转换 --lock-all-tables 为 on,除非也指定了 --single-transaction(在这种情况下,全局读锁仅在转储开始时短暂地持有 - 不要忘记阅读下面的 --single-transaction)。在所有情况下,日志上的任何操作都将在转储时的确切时刻发生。选项自动关闭 --lock-tables。 |
| -E, --events | 转储事件。 |
| -e, --extended-insert | 使用包含多个 VALUES 列表的多行 INSERT 语法。(默认为 on; 使用 --skip-extended-insert 禁用。) |
| --fields-terminated-by=name | 输出文件中的字段由给定字符串终止。 |
| --fields-enclosed-by=name | 输出文件中的字段由给定字符包围。 |
| --fields-optionally-enclosed-by=name | 输出文件中的字段可以选择由给定字符包围。 |
| --fields-escaped-by=name | 输出文件中的字段由给定字符转义。 |
| -F, --flush-logs | 在开始转储之前在服务器中刷新日志文件。请注意,如果一次转储多个数据库(使用 --databases= 或 --all-databases 选项),将为每个转储的数据库刷新日志。例外情况是使用 --lock-all-tables 或 --master-data:在这种情况下,日志将只刷新一次,对应于锁定所有表的时刻。因此,如果您希望您的转储和日志刷新在完全相同的时间发生,您应该使用 --lock-all-tables或 --master-data 与 --flush-logs。 |
| --flush-privileges | 在转储 mysql 数据库后发出 FLUSH PRIVILEGES 语句。应该在转储包含 mysql 数据库 和依赖于 mysql 数据库中数据的任何其他数据库的情况下使用此选项以进行正确的还原。 |
| -f, --force | 即使收到 SQL 错误,也要继续。 |
| -?, --help | 显示此帮助消息并退出。 |
| --hex-blob | 以十六进制格式转储二进制字符串(BINARY、VARBINARY、BLOB)。 |
| -h, --host=name | 连接到主机。 |
| --ignore-error=name | 遇到转储期间要忽略的错误号的逗号分隔列表。 |
| --ignore-table=name | 不转储指定的表。要忽略多个表,请多次使用该指令,每次一个。每个表都必须使用数据库和表名称指定,例如,--ignore-table=database.table。 |
| --include-master-host-port | 在使用 --dump-slave 生成的转储中,将 'MASTER_HOST= |
| --insert-ignore | 使用 INSERT IGNORE 插入行。 |
| --lines-terminated-by=name | 输出文件中的行由给定字符串终止。 |
| -x, --lock-all-tables | 锁定所有数据库中的所有表。这通过在整个转储过程中获取全局读锁来实现。自动关闭 --single-transaction 和 --lock-tables。 |
| -l, --lock-tables | 为读取锁定所有表。 (默认为 on; 使用 --skip-lock-tables 禁用。) |
| --log-error=name | 将警告和错误附加到给定文件。 |
| --master-data[=#] | 这会将二进制日志位置和文件名附加到输出中。如果等于 1,将打印为 CHANGE MASTER 命令; 如果等于 2,则该命令将以注释符号前缀。此选项将转换 --lock-all-tables 为 on,除非也指定了 --single-transaction(在这种情况下,全局读锁仅在转储开始时短暂地持有 - 不要忘记阅读下面的 --single-transaction)。在所有情况下,日志上的任何操作都将在转储时的确切时刻发生。选项自动关闭 --lock-tables。 |
| --max-allowed-packet=# | 发送到服务器或从服务器接收的最大数据包长度。 |
| --net-buffer-length=# | TCP/IP 和套接字通信的缓冲区大小。 |
| --no-autocommit | 使用 autocommit/commit 语句包装表。 |
| -n, --no-create-db | 禁止为每个转储的数据库输出通常为 --all-databases 或 --databases 给出的CREATE DATABASE ... IF EXISTS 语句。 |
| -t, --no-create-info | 不写入表创建信息。 |
| -d, --no-data | 没有行信息。 |
| -N, --no-set-names | 与 --skip-set-charset 相同。 |
| --opt | 与 --add-drop-table、--add-locks、--create-options、--quick、--extended-insert、--lock-tables、--set-charset 和 --disable-keys 相同。默认情况下启用,使用 --skip-opt 禁用。 |
| --order-by-primary | 按主键或第一个唯一键对每个表的行进行排序,如果存在此类键。在将 MyISAM 表转储以加载到 InnoDB 表中时有用,但会使转储本身花费相当长的时间。 |
| -p, --password[=name] | 连接到服务器时要使用的密码。如果未给出密码,则会在 tty 上请求。 |
| -P, --port=# | 用于连接的端口号。 |
| --protocol=name | 用于连接的协议(tcp、socket、pipe、memory)。 |
| -q, --quick | 不要缓冲查询,直接转储到 stdout。(默认为 on; 使用 --skip-quick 禁用。) |
| -Q, --quote-names | 使用反引号 (`) 引用表和列名称。(默认为 on; 使用 --skip-quote-names 禁用。) |
| --replace | 使用 REPLACE INTO 而不是 INSERT INTO。 |
| -r, --result-file=name | 将输出直接写入给定文件。应该在使用回车换行对分隔文本行(\r\n)分隔文本行的系统(例如,DOS、Windows)中使用此选项。此选项确保仅使用单个换行符。 |
| -R, --routines | 转储存储例程(函数和过程)。 |
| --set-charset | 在输出中添加 'SET NAMES default_character_set'。(默认为 on; 使用 --skip-set-charset 禁用。) |
| --set-gtid-purged[=name] | 在输出中添加 'SET @@GLOBAL.GTID_PURGED'。此选项的可能值为 ON、OFF 和 AUTO。如果使用 ON 并且服务器未启用 GTID,则生成错误。如果使用 OFF,则此选项不执行任何操作。如果使用 AUTO 并且服务器启用了 GTID,则在输出中添加 'SET @@GLOBAL.GTID_PURGED'。如果禁用了 GTID,则 AUTO 不执行任何操作。如果未提供任何值,则将考虑默认值(AUTO)。 |
| --single-transaction | 通过在单个事务中转储所有表创建一致的快照。仅适用于支持多版本控制的存储引擎中的表(目前只有 InnoDB);不能保证其他存储引擎的转储一致性。当进行 --single-transaction 转储时,为了确保有效的转储文件(正确的表内容和二进制日志位置),不应该使用以下语句的任何其他连接:ALTER TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE,因为一致的快照与它们不隔离。选项自动关闭 --lock-tables。 |
| --dump-date | 在输出末尾放置转储日期。(默认为 on; 使用 --skip-dump-date 禁用。) |
| --skip-mysql-schema | 跳过添加 mysql 模式的 DROP DATABASE。 |
| --skip-opt | 禁用 --opt。禁用 --add-drop-table、--add-locks、--create-options、--quick、--extended-insert、--lock-tables、--set-charset 和 --disable-keys。 |
| -S, --socket=name | 用于连接的套接字文件。 |
| --secure-auth | 如果客户端使用旧(pre-4.1.1)协议连接到服务器,则拒绝客户端连接。已弃用。总是 TRUE。 |
| --ssl-mode=name | SSL 连接模式。 |
| --ssl | 已弃用。请改用 --ssl-mode。(默认为 on; 使用 --skip-ssl 禁用。) |
| --ssl-verify-server-cert | 已弃用。请改用 --ssl-mode=VERIFY_IDENTITY。 |
| --ssl-ca=name | PEM 格式的 CA 文件。 |
| --ssl-capath=name | CA 目录。 |
| --ssl-cert=name | PEM 格式的 X509 证书。 |
| --ssl-cipher=name | 要使用的 SSL 密码。 |
| --ssl-key=name | PEM 格式的 X509 密钥。 |
| --ssl-crl=name | 证书吊销列表。 |
| --ssl-crlpath=name | 证书吊销列表路径。 |
| --tls-version=name | 要使用的 TLS 版本,允许的值为:TLSv1、TLSv1.1、TLSv1.2 |
| --server-public-key-path=name | 服务器公共 RSA 密钥的文件路径(PEM 格式)。 |
| --get-server-public-key | 获取服务器公钥 |
| -T, --tab=name | 为每个表创建制表符分隔的文本文件到给定路径。 (创建 .sql 和 .txt 文件。)注意:只有在 mysqldump 在与 mysqld 服务器相同的机器上运行时才能使用此选项。 |
| --tables | 覆盖选项 --databases(-B)。 |
| --triggers | 为每个转储表转储触发器。(默认为 on; 使用 --skip-triggers 禁用。) |
| --tz-utc | 在转储顶部设置 'SET TIME_ZONE='+00:00'',以允许在服务器具有不同时区的数据或将数据移动到具有不同时区的服务器时转储 TIMESTAMP 数据。(默认为 on; 使用 --skip-tz-utc 禁用。) |
| -u, --user=name | 如果不是当前用户,则用于登录的用户。 |
| -v, --verbose | 打印有关各个阶段的信息。 |
| -V, --version | 输出版本信息并退出。 |
| -w, --where=name | 仅转储选定的记录。引号是必需的。 |
| -X, --xml | 以格式良好的 XML 形式转储数据库。 |
| --plugin-dir=name | 用于客户端插件的目录。 |
| --default-auth=name | 要使用的默认认证客户端插件。 |
| --enable-cleartext-plugin | 启用/禁用明文身份验证插件。 |