的, mysqldump客户端实用程序执行, mysqldump命令还可以生成CSV、其他带分隔符的文本或XML格式的输出。
, mysqldump至少需要
选择
转储表的特权,显示视图
对于转储视图,触发
对于转储触发器,锁表
如果——单独的事务
选项没有被使用,并且(从MySQL 5.7.31开始)过程
如果——no-tablespaces
选项未使用。某些选项可能需要其他特权,如选项描述中所述。要重新加载转储文件,必须具有执行其中包含的语句所需的特权,例如适当的
创建
由这些语句创建的对象的特权。, mysqldump输出可以包括
修改数据库
更改数据库排序规则的语句。当转储存储的程序以保存其字符编码时,可以使用这些变量。若要重新加载包含此类语句的转储文件,请使用改变
需要受影响数据库的特权。请注意在带有输出重定向的Windows上使用PowerShell生成的转储将创建一个具有UTF-16编码的文件:
Mysqldump [options] > dump.sql
但是,不允许使用UTF-16作为连接字符集(请参阅——结果文件选项,它创建ASCII格式的输出:
Mysqldump [options]——result-file=dump.sql
性能和可伸缩性注意事项
, mysqldump
优点包括在恢复之前查看甚至编辑输出的便利性和灵活性。您可以克隆数据库用于开发和DBA工作,或者对现有数据库进行轻微修改以用于测试。它并不是用于备份大量数据的快速或可伸缩的解决方案。对于大数据,即使备份步骤花费了合理的时间,恢复数据也可能非常缓慢,因为重新执行SQL语句涉及插入、创建索引等磁盘I/O。对于大规模备份和恢复,请使用a
如果您的表主要是
InnoDB
表格,或者如果你有混合的InnoDB
而且MyISAM
表,考虑使用mysqlbackupMySQL企业备份产品命令。(可作为企业版订阅的一部分使用。)它提供了最佳的性能InnoDB
最小化中断的备份;它还可以从备份表MyISAM
以及其他存储引擎;它提供了许多方便的选项来适应不同的备份场景。看到, mysqldump可以逐行检索和转储表内容,也可以从表中检索整个内容,并在转储之前将其缓冲到内存中。如果要转储大型表,内存中的缓冲可能是个问题。若要逐行转储表,请使用——快速
选择(或——选择
,使——快速
).的——选择
选项(因此——快速
)默认启用,因此要启用内存缓冲,请使用——skip-quick
.的最新版本, mysqldump要生成一个转储文件并重新加载到一个非常旧的MySQL服务器中,请使用
——skip-opt
选项,而不是——选择
或——extended-insert
选择。欲了解更多有关, mysqldump,请参阅调用语法
一般有三种使用方法, mysqldump-为了转储一组一个或多个表,一组一个或多个完整的数据库,或整个MySQL服务器,如下所示:
, mysqldump [选项]db_name[tbl_name...], mysqldump [选项]——数据库db_name..., mysqldump [选项),所有数据库
要转储整个数据库,请不要命名下面的任何表
db_name
,或使用——数据库
或——所有数据库
选择。查看您的版本的选项列表, mysqldump支持,发出命令, mysqldump——帮助.
选项语法-按字母顺序摘要
, mysqldump支持以下选项,这些选项可以在命令行上指定,也可以在
(, mysqldump)
而且(客户端)
选项文件的组。有关MySQL程序使用的选项文件的信息,请参见表4.15 mysqldump选项
选项名称 描述 介绍了 弃用 ——add-drop-database 在每个CREATE DATABASE语句之前添加DROP DATABASE语句 ——add-drop-table 在每个CREATE TABLE语句之前添加DROP TABLE语句 ——add-drop-trigger 在每个CREATE TRIGGER语句之前添加DROP TRIGGER语句 ——锁 用LOCK TABLES和UNLOCK TABLES语句包围每个表转储 ——所有数据库 转储所有数据库中的所有表 ——允许关键字 允许创建作为关键字的列名 ——apply-slave-statements 在CHANGE MASTER语句之前包含STOP SLAVE,在输出结束时包含START SLAVE ——bind-address 使用指定的网络接口连接MySQL服务器 ——character-sets-dir 字符集的安装目录 ——评论 为转储文件添加注释 ——紧凑 产生更紧凑的输出 ——兼容 生成与其他数据库系统或旧的MySQL服务器更兼容的输出 ——complete-insert 使用包含列名的完整INSERT语句 ——压缩 压缩客户端和服务器之间发送的所有信息 ——提供些选择 在CREATE table语句中包含所有mysql特定的表选项 ——数据库 将所有name参数解释为数据库名称 ——调试 编写调试日志 ——debug-check 当程序退出时打印调试信息 ——debug-info 当程序退出时,打印调试信息、内存和CPU统计信息 ——default-auth 使用的身份验证插件 ——default-character-set 指定默认字符集 ——defaults-extra-file 除了通常的选项文件外,还可以读取命名选项文件 ——defaults-file 只读命名选项文件 ——defaults-group-suffix 选项组后缀值 ——delete-master-logs 在主复制服务器上,执行转储操作后,请删除二进制日志 ——disable-keys 对于每个表,INSERT语句周围都包含禁用和启用键的语句 ——dump-date 如果给出——comments,则将转储日期包含为“转储已完成”注释 ——dump-slave 包含CHANGE MASTER语句,列出从服务器的主服务器的二进制日志坐标 ——enable-cleartext-plugin 启用明文身份验证插件 5.7.10 ——事件 从已转储的数据库转储事件 ——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语句 ——力 即使在表转储期间发生SQL错误,也要继续 ——get-server-public-key 从服务器请求RSA公钥 5.7.23 ——帮助 显示帮助信息并退出 ——hex-blob 使用十六进制表示法转储二进制列 ——主机 MySQL服务器所在的主机 ——ignore-error 忽略指定的错误 ——ignore-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 锁定所有数据库中的所有表 ——锁表 在转储表之前锁定所有表 ——日志错误 将警告和错误附加到指定文件 ——登录路径 从.mylogin.cnf读取登录路径选项 ——主数据 将二进制日志文件名和位置写入输出 ——max-allowed-packet 发送到服务器或从服务器接收的最大数据包长度 ——net-buffer-length 用于TCP/IP和套接字通信的缓冲区大小 ——no-autocommit 将每个转储表的INSERT语句包含在SET autocommit = 0和COMMIT语句中 ——no-create-db 不写CREATE DATABASE语句 ——no-create-info 不写CREATE TABLE语句重新创建每个转储表 ——没有数据 不转储表内容 ——已 读取无选项文件 ——no-set-names 与——skip-set-charset相同 ——no-tablespaces 输出中不写任何CREATE LOGFILE GROUP或CREATE TABLESPACE语句 ——选择 ——add-drop-table——add-locks——create-options——disable-keys——extended-insert——lock-tables——quick——set-charset的简写 ——order-by-primary 转储每个表的行,按其主键排序,或按其第一个唯一索引排序 ——密码 连接到服务器时使用的密码 ——管 使用命名管道连接到服务器(仅限Windows) ——plugin-dir 安装插件的目录 ——港口 TCP/IP连接端口号 ——print-defaults 打印默认选项 ——协议 要使用的传输协议 ——快速 从服务器检索表的行,每次一行 ——quote-names 反引号字符中的引号标识符 ——取代 写REPLACE语句而不是INSERT语句 ——结果文件 直接输出到给定文件 ——例程 从转储的数据库转储存储例程(过程和函数) ——secure-auth 不发送密码到服务器在旧(pre-4.1)格式 是的 ——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) ——单独的事务 在从服务器转储数据之前,执行一个BEGIN SQL语句 ——skip-add-drop-table 在每个CREATE TABLE语句之前不添加DROP TABLE语句 ——skip-add-locks 不要添加锁 ——skip-comments 不添加注释转储文件 ——skip-compact 不产生更紧凑的输出 ——skip-disable-keys 不要禁用键 ——skip-extended-insert 关闭扩展插入 ——skip-opt 关闭——opt设置的选项 ——skip-quick 不从服务器一次一行地检索表的行吗 ——skip-quote-names 不要引用标识符 ——skip-set-charset 不写SET NAMES语句 ——skip-triggers 不要转储触发器 ——skip-tz-utc 关闭tz-utc ——套接字 Unix套接字文件或Windows命名管道使用 ——ssl 启用连接加密 ——ssl-ca 包含受信任SSL证书颁发机构列表的文件 ——ssl-capath 包含受信任的SSL证书颁发机构证书文件的目录 ——ssl-cert 包含X.509证书的文件 ——ssl cipher 用于连接加密的允许密码 ——ssl-crl 包含证书撤销列表的文件 ——ssl-crlpath 包含证书撤销列表文件的目录 ——ssl密钥 包含X.509密钥的文件 ——ssl-mode 到服务器的连接所需的安全状态 5.7.11 ——ssl-verify-server-cert 根据服务器证书验证主机名 ——选项卡 生成制表符分隔的数据文件 ——表 覆盖——databases或-B选项 ——tls版本 加密连接允许使用TLS协议 5.7.10 ——触发器 转储每个已转储表的触发器 ——tz-utc 添加SET TIME_ZONE='+00:00'转储文件 ——用户 连接到服务器时使用的MySQL用户名 ——详细 详细模式 ——版本 显示版本信息并退出 —— 只转储由给定的WHERE条件选择的行 ——xml 生成XML输出
连接选项
的, mysqldump命令登录到MySQL服务器以提取信息。以下选项指定如何在同一台机器上或远程系统上连接到MySQL服务器。
在具有多个网络接口的计算机上,使用此选项选择用于连接MySQL服务器的接口。
启用
mysql_clear_password
明文身份验证插件。(见从服务器请求基于RSA密钥对的密码交换所需的公钥。属性进行身份验证的客户机应用此选项
caching_sha2_password
身份验证插件。对于该插件,服务器不发送公钥,除非请求。对于没有使用该插件进行身份验证的帐户,该选项将被忽略。如果不使用基于rsa的密码交换,它也会被忽略,就像客户端使用安全连接连接到服务器时一样。如果
——server-public-key-path =
并指定有效的公钥文件,它优先于file_name
——get-server-public-key
.有关
caching_sha2_password
插件,看到——get-server-public-key
选项是在MySQL 5.7.23中添加的。从给定主机上的MySQL服务器转储数据。默认主机为
本地主机
.中的指定登录路径中读取选项
.mylogin.cnf
登录路径文件。一个”登录路径”是一个选项组,包含指定要连接到哪个MySQL服务器以及要验证为哪个帐户的选项。要创建或修改登录路径文件,请使用mysql_config_editor实用程序。看到连接服务器时使用的MySQL帐户密码。密码为可选配置。如果没有给出,, mysqldump提示一个。如果给出了,就一定有没有空间之间的
——密码=
或- p
密码跟在后面。如果未指定密码选项,则默认为不发送密码。在命令行上指定密码应该被认为是不安全的。要避免在命令行中输入密码,请使用选项文件。看到, mysqldump不应该提示一个,使用
——skip-password
选择。在Windows上,使用命名管道连接到服务器。属性启动服务器时,此选项才适用
named_pipe
系统变量启用支持命名管道连接。属性指定的Windows组的成员named_pipe_full_access_group
系统变量。查找插件的目录。属性时指定此选项
——default-auth
选项用于指定身份验证插件, mysqldump没有找到它。看到对于TCP/IP连接,要使用的端口号。
用于连接到服务器的传输协议。当其他连接参数通常导致使用与您想要的协议不同的协议时,它很有用。有关允许值的详细信息,请参见
不要以旧格式(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中已删除对它们的支持。有关帐户升级说明,请参见
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
插件,看到——server-public-key-path
选项是在MySQL 5.7.23中添加的。连接到
本地主机
例如,要使用的Unix套接字文件,或者在Windows上,要使用的命名管道的名称。在Windows上,此选项仅在服务器使用
named_pipe
系统变量启用支持命名管道连接。属性指定的Windows组的成员named_pipe_full_access_group
系统变量。选项以
——ssl
指定是否使用加密连接到服务器,并指出在何处查找SSL密钥和证书。看到加密连接所允许的TLS协议。一个或多个以逗号分隔的协议名称的列表。可以为此选项命名的协议取决于用于编译MySQL的SSL库。详细信息请参见
用于连接服务器的MySQL帐户的用户名。
设置文件选项
这些选项用于控制要读取的选项文件。
——defaults-extra-file =
file_name
读取这个选项文件在全局选项文件之后,但(在Unix上)在用户选项文件之前。如果文件不存在或无法访问,则会发生错误。如果
file_name
不是绝对路径名,它是相对于当前目录解释的。只使用给定的选项文件。如果文件不存在或无法访问,则会发生错误。如果
file_name
不是绝对路径名,它是相对于当前目录解释的。例外:即使与
——defaults-file
,客户端程序读取.mylogin.cnf
.不仅要阅读常用的选项组,还要阅读具有常用名称和后缀为的组
str
.例如,, mysqldump通常读取(客户端)
而且(, mysqldump)
组。如果此选项为——defaults-group-suffix = _other
,, mysqldump也读取(client_other)
而且(mysqldump_other)
组。不要读取任何选项文件。如果从选项文件中读取未知选项导致程序启动失败,
——已
可用于防止它们被读取。唯一的例外是
.mylogin.cnf
文件在所有情况下都被读取,如果它存在的话。这允许以比在命令行上更安全的方式指定密码——已
使用。创建.mylogin.cnf
,使用mysql_config_editor实用程序。看到打印程序名称和它从选项文件中获得的所有选项。
的使用场景, mysqldump包括建立一个全新的MySQL实例(包括数据库表),用现有的数据库和表替换现有实例中的数据。通过在转储文件中编码各种DDL语句,以下选项允许您指定在恢复转储时要删除和设置哪些内容。
写一个
删除数据库
每项前的陈述创建数据库
声明。选项通常与——所有数据库
或——数据库
选项,因为没有创建数据库
除非指定了其中一个选项,否则语句将被写入。对象所使用的表空间创建所需的所有SQL语句添加到表转储中
NDB
表格的输出中不包含此信息, mysqldump.这个选项目前只与NDB集群表相关,在MySQL 5.7中不支持。不要写
创建表
创建每个转储表的语句。请注意这个选项可以不排除创建日志文件组或表空间的语句, mysqldump输出;但是,您可以使用
——no-tablespaces
这个目的的选项。这个选项会抑制所有选项
创建日志文件组
而且创建表空间
语句的输出, mysqldump.
调试选项
以下选项打印调试信息、在转储文件中编码调试信息,或者不管潜在的问题都让转储操作继续进行。
允许创建作为关键字的列名。这是通过在每个列名前面加上表名来实现的。
在转储文件中写入附加信息,如程序版本、服务器版本和主机。该选项默认启用。要抑制这些额外信息,请使用
——skip-comments
.——调试(=
,debug_options
]- # (
debug_options
]编写调试日志。一个典型的
debug_options
字符串是d:师:啊,
.默认值为file_name
d:师:啊,/ tmp / mysqldump.trace
.此选项仅在MySQL使用
WITH_DEBUG
.Oracle提供的MySQL版本二进制文件不使用此选项构建。当程序退出时打印一些调试信息。
此选项仅在MySQL使用
WITH_DEBUG
.Oracle提供的MySQL版本二进制文件不使用此选项构建。在程序退出时打印调试信息以及内存和CPU使用统计信息。
此选项仅在MySQL使用
WITH_DEBUG
.Oracle提供的MySQL版本二进制文件不使用此选项构建。如果
——评论
给出了选项,, mysqldump在以下表单转储的末尾生成注释:—转储完成于日期
但是,日期会导致在不同时间获取的转储文件看起来不同,即使数据在其他方面是相同的。
——dump-date
而且——skip-dump-date
控制是否将日期添加到注释。默认为——dump-date
(在评论中注明日期)。——skip-dump-date
抑制日期打印。忽略所有错误;即使在表转储期间发生SQL错误,也要继续。
这个选项的一个用途是引起, mysqldump即使当它遇到一个因为定义引用了一个已经被删除的表而变得无效的视图时,也要继续执行。没有
——力
,, mysqldump退出并显示错误消息。与——力
,, mysqldump打印错误消息,但它还将包含视图定义的SQL注释写入转储输出并继续执行。如果
——ignore-error
选项还可以忽略特定的错误,——力
优先。通过将警告和错误追加到指定文件来记录它们。默认情况下是不进行日志记录。
的描述
——评论
选择。详细的模式。打印有关程序功能的更多信息。
帮助选项
属性的相关信息, mysqldump命令本身。
国际化的选择
的方式, mysqldump命令表示具有国家语言设置的字符数据。
——character-sets-dir =
dir_name
使用
charset_name
作为默认字符集。看到, mysqldump使用use utf8
.关闭
——set-charset
设置,与指定相同——skip-set-charset
.写
组名称
到输出。该选项默认启用。为了镇压default_character_set
组名称
声明中,使用——skip-set-charset
.
复制选项
的, mysqldump命令经常用于在复制配置中的副本服务器上创建空实例或包含数据的实例。以下选项适用于在复制源服务器和复制服务器上转储和恢复数据。
类生成的副本转储
——dump-slave
选项,添加停止奴隶
在将master更改为
语句和开始的奴隶
语句在输出的末尾。在源复制服务器上,删除二进制日志
清除二进制日志
语句,在执行转储操作后发送给服务器。此选项需要重新加载
特权以及足够执行该语句的特权。此选项自动启用——主数据
.此选项类似于
——主数据
除了用于转储复制复制服务器以生成转储文件,该转储文件可用于将另一个服务器设置为具有与转储服务器相同源的副本。它导致转储输出包含将master更改为
语句,该语句指示转储副本源的二进制日志坐标(文件名和位置)。的将master更改为
语句读取的值Relay_Master_Log_File
而且Exec_Master_Log_Pos
从显示奴隶状态
输出并将它们用于MASTER_LOG_FILE
而且MASTER_LOG_POS
分别。这些是副本应该开始复制的源服务器坐标。请注意中继日志中已执行的事务序列的不一致可能导致使用错误的位置。看到——dump-slave方法所做的那样,导致使用来自源的坐标而不是转储服务器的坐标
——主数据
选择。此外,指定此选项会导致——主数据
选项,如果使用,将被覆盖,并有效地忽略。警告如果将要应用转储的服务器使用
gtid_mode =对
而且MASTER_AUTOPOSITION = 1
.选项值的处理方式与for相同
——主数据
(不设置值或设置为1会导致a将master更改为
语句被写入转储,设置2导致语句被写入,但被SQL注释括起来),其效果与——主数据
在启用或禁用其他选项以及如何处理锁定方面。此选项导致, mysqldump在转储之前停止复制SQL线程,并在转储之后重新启动它。
——dump-slave
发送一个显示奴隶状态
语句来获取信息,因此它需要足够的权限来执行该语句。连同
——dump-slave
,——apply-slave-statements
而且——include-master-host-port
也可以使用选项。为
将master更改为
语句生成的副本转储——dump-slave
选项,添加MASTER_HOST
而且MASTER_PORT
选项作为副本源的主机名和TCP/IP端口号。使用此选项可转储源复制服务器以生成转储文件,该文件可用于将另一个服务器设置为源的副本。它导致转储输出包含
将master更改为
转储服务器二进制日志坐标(文件名和位置)的语句。这些是源服务器坐标,在将转储文件加载到副本后,副本应该从这些坐标开始复制。如果选项值为2,则
将master更改为
语句被写成SQL注释,因此只提供信息;当重新加载转储文件时,它不起作用。如果选项值为1,则该语句不会作为注释写入,并在重新加载转储文件时生效。如果不指定选项值,默认值为1。——主数据
发送一个显示主机状态
语句来获取信息,因此它需要足够的权限来执行该语句。该选项还需要重新加载
必须启用特权和二进制日志。的
——主数据
选项自动关闭——锁表
.它也会打开——lock-all-tables
,除非——单独的事务
在这种情况下,只在转储开始时短时间内获得全局读锁(参见——单独的事务
).在所有情况下,对日志的任何操作都发生在转储的确切时刻。方法,也可以通过转储源的现有副本来设置副本
——dump-slave
选项,该选项覆盖——主数据
并在使用两个选项时将其忽略。此选项通过指示是否添加全局事务ID (GTID)来控制写入转储文件的全局事务ID (GTID)信息
设置@@GLOBAL.gtid_purged
语句添加到输出。此选项还可能导致在重新加载转储文件时将语句写入输出,以禁用二进制日志记录。下表显示了允许的选项值。默认值为
汽车
.价值 意义 从
添加不 集
语句添加到输出。在
添加一个 集
语句添加到输出。如果服务器上没有启用gtid,将会发生错误。汽车
添加一个 集
如果在服务器上启用了gtid,则返回到输出。从使用基于gtid的复制的服务器进行部分转储需要
——set-gtid-purged ={|关闭}
要指定的选项。使用在
如果打算仅使用转储服务器中的部分数据部署新的复制副本。使用从
如果目的是通过在拓扑中复制表来修复表。使用从
如果目的是在分离的复制拓扑之间复制一个表,并让它们保持这种状态。的
——set-gtid-purged
选项在重新加载转储文件时对二进制日志记录有以下影响:——set-gtid-purged =了
:设置@@SESSION.SQL_LOG_BIN = 0;
未添加到输出中。——set-gtid-purged =
:设置@@SESSION.SQL_LOG_BIN = 0;
被添加到输出中。——set-gtid-purged =汽车
:设置@@SESSION.SQL_LOG_BIN = 0;
如果所备份的服务器上启用了gtid(即如果汽车
计算结果为在
).
请注意当服务器开启gtid功能时,不建议加载转储文件。
gtid_mode =对
),如果您的转储文件包括系统表。, mysqldump为使用非事务性MyISAM存储引擎的系统表发出DML指令,当启用gtid时,这种组合是不允许的。还要注意,从启用了gtid的服务器加载转储文件到启用了gtid的另一个服务器,会生成不同的事务标识符。格式选项
以下选项指定如何表示整个转储文件或转储文件中的某些类型的数据。它们还控制是否将某些可选信息写入转储文件。
产生更紧凑的输出。此选项启用
——skip-add-drop-table
,——skip-add-locks
,——skip-comments
,——skip-disable-keys
,——skip-set-charset
选项。生成与其他数据库系统或旧的MySQL服务器更兼容的输出。的价值
的名字
可以ansi
,mysql323
,mysql40
,postgresql
,甲骨文
,该软件
,db2
,maxdb
,no_key_options
,no_table_options
,或no_field_options
.若要使用多个值,请用逗号分隔。这些值与设置服务器SQL模式的相应选项具有相同的含义。看到——= oracle兼容不将数据类型映射到Oracle类型,也不使用Oracle注释语法。使用完整的
插入
包含列名的语句。中包含所有特定于mysql的表选项
创建表
语句。——fields-terminated-by =…
,——fields-enclosed-by =…
,——fields-optionally-enclosed-by =…
,——fields-escaped-by =…
属性一起使用这些选项
——选项卡
选项与对应选项具有相同的含义字段
条款为加载数据
.看到使用十六进制表示法转储二进制列(例如,
“abc”
就变成了0 x616263
).受影响的数据类型为二进制
,VARBINARY
,团
类型,位
、所有空间数据类型和其他非二进制数据类型(当与二进制字符集.选项一起使用
——选项卡
选项,与对应的具有相同的含义行
条款加载数据
.看到引用标识符(如数据库、表和列名)
`
字符。如果ANSI_QUOTES
启用SQL模式,标识符将被引用"
字符。该选项默认启用。它可以被禁用——skip-quote-names
,但该选项应在任何选项之后,如——兼容
这可能使——quote-names
.直接输出到指定文件。即使在生成转储时发生错误,也会创建结果文件并覆盖其先前的内容。
这个选项应该在Windows上使用,以防止换行
\ n
未被转换为的字符\ r \ n
回车/换行序列。生成制表符分隔的文本格式数据文件。对于每个转储表,, mysqldump创建一个
文件,其中包含tbl_name
. sql创建表
语句,该语句创建表,服务器将写入
包含其数据的文件。选项值是要写入文件的目录。tbl_name
. txt请注意此选项仅在以下情况下使用, mysqldump在同一台机器上运行mysqld服务器。因为服务器创建了
* . txt
文件,该目录必须是可写的服务器和MySQL帐户,您使用的必须有文件
特权。因为, mysqldump创建* . sql
在同一目录下,必须由您的系统登录帐户可写。默认情况下,
. txt
数据文件的格式使用列值之间的制表符和每行末尾的换行符。方法显式指定格式——字段
而且xxx
——lines-terminated-by
选项。属性指定的字符集
——default-character-set
选择。此选项启用
时间戳
要在不同时区的服务器之间转储和重新加载的列。, mysqldump将其连接时区设置为UTC并添加设置TIME_ZONE = 0 ' + '
到转储文件。如果没有这个选项,时间戳
在源和目标服务器的本地时区中转储和重新加载列,如果服务器处于不同的时区,则可能导致值发生更改。——tz-utc
还可以防止夏令时造成的变化。——tz-utc
默认启用。要禁用它,请使用——skip-tz-utc
.将转储输出写入格式良好的XML。
零
,“零”
,和空值:用于命名为column_name
,零
值、空字符串和字符串值“零”
在此选项生成的输出中彼此区别如下。值: XML表示: 零
(未知的价值)<字段名= "
column_name
Xsi:nil="true" />”
(空字符串)<字段名= "
column_name
" > < > /字段“零”
(字符串值)<字段名= "
column_name
“零< /字段> >的输出。mysql客户端运行时使用
——xml
Option也遵循上述规则。(见, mysqldump包括XML命名空间,如下所示:—root world City <, mysqldumpxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
1 Kabul AFG Kabol 1780000 4079 Rafah PSE Rafah 92020
过滤选项
以下选项控制将哪些类型的模式对象写入转储文件:按类别,例如触发器或事件;通过名称,例如,选择转储哪些数据库和表;属性从表数据中过滤行
在哪里
条款。转储所有数据库中的所有表。这与使用
——数据库
选项,并在命令行上命名所有数据库。转储几个数据库。通常情况下,, mysqldump将命令行上的第一个name参数作为数据库名,将后面的名称作为表名。使用此选项,它将所有name参数视为数据库名称。
创建数据库
而且使用
语句包含在每个新数据库之前的输出中。此选项可用于转储
INFORMATION_SCHEMA
而且performance_schema
数据库,通常即使使用——所有数据库
选择。(也可使用——skip-lock-tables
选择。)在输出中包括转储数据库的事件调度器事件。此选项需要
事件
这些数据库的特权。使用生成的输出
——事件
包含创建事件
语句来创建事件。但是,这些语句不包括事件创建和修改时间戳等属性,因此当重新加载事件时,将使用等于重新加载时间的时间戳创建事件。如果您要求使用事件的原始时间戳属性创建事件,请不要使用
——事件
.类的内容被转储并重新加载mysql.event
表,使用具有适当权限的MySQL帐户mysql
数据库。忽略指定的错误。选项值是一个以逗号分隔的错误号列表,指定在期间忽略的错误, mysqldump执行。如果
——力
选项也可以忽略所有错误,——力
优先。——ignore-table =
db_name.tbl_name
不要转储给定的表,必须同时使用数据库名和表名来指定。若要忽略多个表,请多次使用此选项。此选项也可用于忽略视图。
不要写入任何表行信息(即不要转储表内容)。类,这很有用
创建表
语句(例如,通过加载转储文件来创建表的空副本)。在输出中包含转储数据库的存储例程(过程和函数)。此选项需要
选择
特权mysql.proc
表格使用生成的输出
——例程
包含创建过程
而且创建函数
语句来创建例程。然而,这些语句不包括例程创建和修改时间戳等属性,因此当例程被重新加载时,它们被创建的时间戳等于重新加载时间。如果您要求使用它们的原始时间戳属性创建例程,请不要使用
——例程
.类的内容被转储并重新加载mysql.proc
表,使用具有适当权限的MySQL帐户mysql
数据库。覆盖
——数据库
或- b
选择。, mysqldump将选项后面的所有名称参数视为表名。在输出中包含每个转储表的触发器。默认情况下启用此选项;使用
——skip-triggers
.为了能够转储表的触发器,必须具有
触发
表的特权。允许多个触发器。, mysqldump按激活顺序转储触发器,以便在重新加载转储文件时,触发器将按相同的激活顺序创建。然而,如果, mysqldump转储文件包含具有相同触发器事件和操作时间的表的多个触发器,当试图将转储文件加载到不支持多个触发器的旧服务器中时会发生错误。(有关变通方法,请参见
只转储由给定选择的行
在哪里
条件。如果条件包含对命令解释器特殊的空格或其他字符,则条件周围的引号是强制的。例子:
——where="user='jimf'" -w"userid>1" -w"userid<1"
性能选项
以下选项与性能尤其是恢复操作的性能最相关。对于大数据集,恢复操作(处理
插入
转储文件中的语句)是最耗时的部分。在需要快速恢复数据的情况下,可以提前对该阶段的性能进行规划和测试。对于以小时为单位的恢复时间,您可能更喜欢另一种备份和恢复解决方案,例如InnoDB-只使用和混合使用数据库。性能也受到
对于每一张桌子,围绕
插入
语句与/ * !40000修改表
而且tbl_name
禁用键*/;/ * !40000修改表
语句。这使得加载转储文件更快,因为索引是在插入所有行之后创建的。的非唯一索引有效tbl_name
启用键*/;MyISAM
表。写
插入
语句使用多行语法,其中包含多个值
列表。这将导致转储文件更小,并在重新加载文件时加快插入速度。客户端/服务器通信缓冲区的最大大小。默认为24MB,最大为1GB。
客户端/服务器通信缓冲区的初始大小。创建多行时
插入
语句(如——extended-insert
或——选择
选项),, mysqldump创建到——net-buffer-length
个字节长。如果增加此变量,请确保MySQL服务器net_buffer_length
系统变量的值至少有这么大。默认情况下启用的此选项是组合的简写
——add-drop-table
——锁
——提供些选择
——disable-keys
——extended-insert
——锁表
——快速
——set-charset
.它提供了一个快速转储操作,并生成一个转储文件,可以快速地重新加载到MySQL服务器中。因为
——选择
选项在默认情况下是启用的,您只指定它的反向——skip-opt
关闭几个默认设置。参见, mysqldump选项组有关选择性启用或禁用受影响的选项子集的信息——选择
.此选项对于转储大型表非常有用。它迫使, mysqldump从服务器检索表的行,每次检索一行,而不是检索整个行集,并在将其写入之前将其缓冲到内存中。
的描述
——选择
选择。
事务选项
以下选项将转储操作的性能与导出数据的可靠性和一致性进行权衡。
围绕每个表转储
锁表
而且打开表
语句。这将导致在重新加载转储文件时更快地插入。看到在开始转储之前,请刷新MySQL服务器日志文件。此选项需要
重新加载
特权。属性组合使用此选项——所有数据库
选项,则将刷新日志对于每个转储的数据库.例外是在使用时——lock-all-tables
,——主数据
,或——单独的事务
:在这种情况下,日志只被刷新一次,对应于所有表被锁定的时间用读锁刷新表
.如果希望转储和日志刷新在同一时刻发生,则应该使用——flush-logs
在一起——lock-all-tables
,——主数据
,或——单独的事务
.添加一个
冲洗的特权
语句转换为转储输出mysql
数据库。类时应使用此选项mysql
数据库和依赖于中的数据的任何其他数据库mysql
数据库进行适当的恢复。因为转储文件中包含
冲洗的特权
语句时,重新加载文件需要足够的权限来执行该语句。请注意从旧版本升级到MySQL 5.7或更高版本时,不要使用
——flush-privileges
.有关此情况下的升级说明,请参见锁定所有数据库中的所有表。这是通过在整个转储期间获取全局读锁来实现的。这个选项会自动关闭
——单独的事务
而且——锁表
.对于每个转储的数据库,在转储它们之前锁定所有要转储的表。这些桌子被锁上了
阅读当地
的情况下允许并发插入MyISAM
表。对于事务性表,例如InnoDB
,——单独的事务
是更好的选择吗——锁表
因为它根本不需要锁定表。因为
——锁表
单独锁定每个数据库的表,此选项不能保证转储文件中的表在数据库之间逻辑一致。不同数据库中的表可能以完全不同的状态被转储。一些选项,例如
——选择
,自动启用——锁表
.如果你想覆盖这个,使用——skip-lock-tables
在选项列表的末尾。转储每个表的行,按其主键排序,或按其第一个唯一索引排序(如果存在这样的索引)。这在转储对象时非常有用
MyISAM
表要加载到InnoDB
表,但这会使转储操作花费相当长的时间。——shared-memory-base-name =
的名字
在Windows上,用于使用共享内存建立到本地服务器的连接的共享内存名称。默认值为
MYSQL
.共享内存名称区分大小写。属性启动服务器时,此选项才适用
shared_memory
启用支持共享内存连接的系统变量。此选项将事务隔离模式设置为
可重复读取
并发送一个开始事务
在转储数据之前向服务器发送SQL语句。它只对事务性表有用,例如InnoDB
,因为它会转储数据库在某个时刻的一致状态开始事务
没有阻止任何申请。在使用此选项时,您应该只记住
InnoDB
表以一致状态转储。例如,任何MyISAM
或内存
使用此选项转储的表仍然可能改变状态。而一个
——单独的事务
转储正在进行中,为了确保转储文件有效(正确的表内容和二进制日志坐标),其他连接不应该使用以下语句:ALTER TABLE
,创建表
,删除表
,重命名表
,截断表
.一致的读取不会与这些语句隔离,因此在要转储的表上使用这些语句会导致选择
这是由, mysqldump检索表内容以获取不正确的内容或失败。的
——单独的事务
选项和——锁表
选项是互斥的,因为锁表
导致隐式提交任何挂起的事务。要转储大表,请合并
——单独的事务
选项中的——快速
选择。选项组
当您有选择地启用或禁用组选项的效果时,顺序很重要,因为选项是先到后处理的。例如,
——disable-keys
——锁表
——skip-opt
不会达到预期的效果;这和——skip-opt
本身。例子
备份整个数据库:
, mysqldumpdb_name>backup-file.sql
将转储文件加载回服务器。
mysqldb_name<backup-file.sql
另一种重载转储文件的方法:
Mysql -e "source/ path-to-backup backup-file.sql"db_name
, mysqldump通过将数据从一个MySQL服务器复制到另一个服务器来填充数据库也非常有用:
, mysqldump——选择db_name| mysql——host=remote_host- cdb_name
你可以用一个命令转储多个数据库:
, mysqldump——数据库db_name1[db_name2...]>my_databases.sql
要转储所有数据库,请使用
——所有数据库
选择:Mysqldump——all-databases > all_databases.sql
为
InnoDB
表,, mysqldump提供一种在线备份的方法:Mysqldump—all-databases—master-data—single-transaction > all_databases.sql
此备份在所有表上获得全局读锁(使用
用读锁刷新表
)在转储开始时。一旦获得了这个锁,就会读取二进制日志坐标并释放锁。时,如果长更新语句正在运行冲洗
语句,MySQL服务器可能会停滞,直到这些语句完成。在此之后,转储不再锁定,并且不会影响对表的读写。如果MySQL服务器接收到的更新语句很短(就执行时间而言),初始锁定期应该不明显,即使有很多更新。用于时间点恢复(也称为”前滚,”当您需要恢复旧备份并重放自该备份以来发生的更改时,旋转二进制日志通常很有用(请参阅
Mysqldump——all-databases——master-data=2 > all_databases.sql
或者:
Mysqldump——all-databases——flush-logs——master-data=2 > all_databases.sql
的
——主数据
而且——单独的事务
选项可以同时使用,这提供了一种方便的方式,使在线备份适合在时间点恢复之前使用InnoDB
存储引擎。有关备份的详细信息,请参见
选择…的效果
——选择
除某些特性外,使用——跳过
每个功能的选项。若要禁用扩展插入和内存缓冲,请使用——选择
——skip-extended-insert
——skip-quick
.(实际上,——skip-extended-insert
——skip-quick
是充分的因为——选择
默认开启。)扭转
——选择
对于除索引禁用和表锁定外的所有功能,使用——skip-opt
——disable-keys
——锁表
.
限制
, mysqldump不转储
INFORMATION_SCHEMA
,performance_schema
,或sys
默认为Schema。要转储其中任何一个,请在命令行上显式地命名它们。也可以使用——数据库
选择。为INFORMATION_SCHEMA
而且performance_schema
,也使用——skip-lock-tables
选择。, mysqldump不转储NDB集群
ndbinfo
信息数据库。, mysqldump不转储
InnoDB
创建表空间
语句。不建议从使用的转储进行恢复, mysqldump到启用了gtid的MySQL 5.6.9或更早版本的服务器。看到, mysqldump属性的语句
general_log
而且slow_query_log
的转储的表mysql
数据库。日志表内容不转储。