客户端可用于转储或抓取数据库以进行备份或将数据传输到另一个 SQL 服务器(不一定是 MySQL 服务器)。转储包含创建表
客户端可用于转储或抓取数据库以进行备份或将数据传输到另一个 SQL 服务器(不一定是 MySQL 服务器)。转储包含创建表和/或加载表的 SQL 语句。
如果您在服务器上进行备份并且表都是表,您应该考虑使用它,因为备份和恢复可以更快。
有3种调用方式:
如果未指定表或使用 --all- 选项,则转储整个数据库。
要获取您的版本支持的选项,请执行 --help。
如果在没有 --quick 或 --opt 选项的情况下运行,则在转储结果之前将整个结果集加载到内存中。如果转储大型数据库,可能会出现问题。该选项默认启用,但可以使用 --skip-opt 禁用。
如果使用最新版本的程序生成转储以重新安装到非常旧版本的 MySQL 服务器中,则不应使用 –opt 或 -e 选项。
支持以下选项:
- -帮助,-?显示帮助消息并退出。 --add-drop-- 在每个语句之前添加 DROP 语句。 --add-drop- 在每个 TABLE 语句之前添加 DROP TABLE 语句。 --add- 使用 LOCK 和语句引用每个表转储。重新加载转储文件时插入速度更快。 --all--, -A 转储所有数据库中的所有表。与使用 --- 选项相同,在命令行上命名所有数据库。 --allow- 允许创建关键字列名称。每个列名前面应带有表名前缀。 ---[={0|1}] 如果设置为 0,则禁用转储文件中的其他信息,例如程序版本、服务器版本和主机。 --skip — 结果与 ---=0 相同。默认值为 1,其中包含附加信息。 -- 产生少量产出。此选项禁用注释并启用 --skip-add-drop-、--no-set-names、--skip--keys 和 --skip-add- 选项。
--=name 生成的输出与其他数据库系统或较旧的 MySQL 服务器更兼容。值可以是 ansi、、、、mssql、db2、maxdb、、或。要使用多个值,请用逗号分隔它们。这些值与设置服务器的SQL模式的相应选项具有相同的含义。此选项不保证与其他服务器的兼容性。它仅启用当前使转储输出更加兼容的那些 SQL 模式值。例如,--= 不使用注释语法映射类型或数据类型。 ---, -c 使用包含列名的完整语句。 --, -C 压缩客户端和服务器之间发送的所有信息(如果两者都支持压缩)。 --- 在 TABLE 语句中包含所有 MySQL 表选项。 --, -B 转储多个数据库。通常,命令行中的第一个名称参数被视为数据库名称,后续名称被视为表名称。
使用此选项,它将所有名称参数视为数据库名称。 IF NOT 和 USE 语句包含在每个新数据库之前的输出中。 ---debug[=], -# [] 写入调试日志。该字符串通常是“d:t:o,”。 ----set= 使用默认字符集。请参见第 5.10.1 节“数据和排序的字符集”。如果未指定,则使用 utf8。 ---使用语句插入行。 ----logs 在主复制服务器上,转储操作完成后删除二进制日志。该选项自动启用 ---data。 ---keys, -K 对于每个表,用 /*!40000 ALTER TABLE KEYS */ 引用语句;和 /*!40000 更改表键 */;声明。
这会更快地加载转储文件,因为索引是在插入所有行之后创建的。此选项仅适用于表。 ---, -e 使用包含多个列表的多行语法。这使得转储文件更小,并加快重新加载文件时的插入速度。 ----by=..., ----by=..., -----by=..., ----by=..., --OK--by=.. 。这些选项与 -T 选项结合使用,与 LOAD DATA 的相应子句具有相同的含义。 --first-slave, -x 已弃用,现在重命名为 --lock-all-。 --flush-logs, -F 在开始转储之前刷新 MySQL 服务器日志文件。此选项需要权限。请注意,如果此选项与 --all--(或 -A)选项结合使用,则会针对每个转储的数据库刷新日志。例外情况是使用 --lock-all- 或 ---data 时:在这种情况下,在锁定所有表后,日志仅刷新一次。
如果要同时转储和刷新日志,应将 --flush-logs 与 --lock-all- 或 ---data 一起使用。 --force, -f 在表转储期间,即使发生 SQL 错误也继续。 --host=, -h 从给定主机上的 MySQL 服务器转储数据。默认主机是 . --hex-blob 使用十六进制表示法转储二进制字符串列(例如,'abc' 变为 )。受影响的列包括,,BLOB。 --lock-all-, -x 锁定所有数据库中的所有表。这是通过整个转储过程中的全局读锁定来实现的。此选项自动关闭 --- 和 --lock-。 --lock-, -l 在开始转储之前锁定所有表。使用 READ LOCAL 锁定表以允许并行插入到表中。对于诸如 BDB 之类的事务表,--- 是更好的选择,因为它根本不需要锁定表。请注意,转储多个数据库时,--lock- 会为每个数据库单独锁定表。
因此,该选项不能保证数据库之间转储文件中的表的逻辑一致性。不同数据库表的转储状态可能完全不同。 ---data[=value] 此选项将二进制日志的位置和文件名写入输出。此选项需要权限并且必须启用二进制日志记录。如果选项值等于 1,则位置和文件名将以语句形式写入转储输出。如果您使用 SQL 转储主服务器来设置从服务器,则从服务器将从主服务器二进制日志中的正确位置启动。如果选项值等于 2,则该语句将被写入 SQL 注释。如果省略值,则这是默认操作。 ---data 选项启用 --lock-all- 除非 ---(在这种情况下,在转储首次启动时仅在短时间内获取全局读锁。另请参阅 ---。在任何一种情况下,与日志记录相关转储时发生的操作。此选项自动关闭 --no--db, -n 如果输出中包含 --- 或 --all-- 选项,则此选项将禁用 /*!32312 IF NOT */ 语句。
--no--info, -t 不要编写重新创建每个转储表的 TABLE 语句。 --no-data, -d 不写入表的任何行信息。如果您只想转储表的结构,这非常有用。 --opt 该选项是简写;相当于指定 --add-drop---add- --- ---keys--- --lock- --quick --set-。它提供了非常快速的转储操作,并生成可以快速加载到 MySQL 服务器中的转储文件。该选项默认启用,但可以使用 --skip-opt 禁用。要仅禁用您确定使用 -opt 启用的选项,请使用 --skip 形式;例如,--skip-add-drop- 或 --skip-quick。 --[=], -p[] 连接到服务器时使用的密码。如果使用短选项形式 (-p),选项和密码之间不能有空格。如果在命令行上省略 -- 或 -p 选项后的密码值,系统将提示您输入 --port=, -P 用于连接的 TCP/IP 端口号。
--={TCP | |管道|使用的连接协议。 --quick, -q 该选项用于转储大型表。它强制从服务器一次一行检索表中的行,而不是检索所有行并在输出之前将其缓存在内存中。 --quote-names, -Q 使用“`”字符引用数据库、表和列名称。如果服务器 SQL 模式包含选项,则使用 '"' 字符来引用名称。该选项默认启用。可以使用 --skip-quote-names 禁用它,但该选项后面应该跟其他选项,例如--quote-names 可以启用 ---file=file, -r file 将输出重定向到给定文件,因为它禁止将换行符 '\n' 字符转换为 '\r\n' 回车符。 /New 行序列。 --, -R 在转储的数据库中转储存储过程(函数和过程)。使用 --- 生成的输出包含 和 语句,但这些语句不包含属性。子例程定义者或创建和修改时间戳。
这意味着当子程序重新加载时,定义者应该在创建时设置为重新加载用户,并且时间戳应该等于重新加载时间。如果需要使用原始定义者和时间戳属性创建子例程,请勿使用 --。相反,使用对 mysql 数据库具有适当权限的 MySQL 帐户直接转储并重新加载 mysql.proc 表的内容。该选项是在 MySQL 5.1.2 中添加的。在此之前,存储过程不会被转储。 --set- 将 SET NAMES t 添加到输出。默认情况下启用此选项。要禁用 SET NAMES 语句,请使用 --skip-set-。 --- 该选项在从服务器转储数据之前发出 BEGIN SQL 语句。它仅适用于事务表,例如 BDB 和 BDB,因为它会在发出 BEGIN 时转储一致的数据库状态,而不会阻塞任何应用程序。使用此选项时,请记住只有表才能以一致状态转储。例如,使用此选项时,任何转储表或 HEAP 表仍然可以更改状态。 --- 和 --lock- 是互斥的,因为 LOCK 会导致任何挂起的事务隐式提交。
要转储大型表,此选项应与 --quick 结合使用。 --=path,-S path是连接时使用的文件(作为默认主机)。 --skip-- 请参阅 --- 选项的说明。 --tab=path, -T path 生成制表符分隔的数据文件。对于每个转储的表,创建一个包含创建该表的 TABLE 语句的 .sql 文件,以及一个包含其数据的 .txt 文件。该选项值是写入文件的目录。默认情况下,.txt 数据文件的格式是在列值之间使用制表符,并在每行之后添加一个新行。可以使用 ---xxx 和 --line --xxx 选项显式指定格式。注意:此选项仅在与服务器在同一台计算机上运行时可用。您必须具有 FILE 权限,并且服务器必须具有在您指定的目录中写入文件的权限。 -- 覆盖 --- 或 -B 选项。选项后面的所有参数都被视为表名。 -- 每个转储表的转储触发器。该选项默认启用;使用 --skip- 禁用它。
--tz-utc 将 SET='+00:00' 添加到转储文件中,以便可以在不同时区的服务器之间转储和重新加载列。 (如果没有此选项,则会在具有本地时区的源服务器和目标服务器之间转储并重新加载列表)。 --tz-utc 还可以防止由于夏令时而发生的变化。 --tz-utc 默认启用。要禁用它,请使用 --skip-tz-utc。该选项是在 MySQL 5.1.2 中添加的。 --user=, -u 连接服务器时使用的 MySQL 用户名。 --, -v 详细模式。打印出程序操作的详细信息。 --, -V 显示版本信息并退出。 --where='where-', -w 'where-' 仅转储由给定 WHERE 条件选择的记录。请注意,如果条件包含命令解释器特定的空格或字符,请务必引用该条件。例如: "--where=user='jimf'" "->1" "- --xml, -X 将转储输出写入 XML。
您还可以使用 --=value 选项设置以下变量: 客户端/服务器通信缓冲区的最大大小。最大为 1GB。客户端/服务器通信缓冲区的初始大小。创建多行插入语句(与选项 --- 或 --opt 一样)时,创建最大长度的行。如果增加这个变量,还应该确保MySQL服务器中的变量至少有这么大。还可以使用 --set-==value 或 -O=value 语法设置变量。然而,这种语法现在已被弃用。
最常用于备份整个数据库:
您可以将转储文件读回服务器,如下所示:
或用于:
也可用于在将数据从一台 MySQL 服务器复制到另一台时加载数据库:
可以使用一个命令转储多个数据库:
如果要转储所有数据库,请使用 –all– 选项:
如果表存储在存储引擎中,则提供在线备份方法(参见下面的命令)。备份只需要对所有表进行全局读锁(使用FLUSH
带读锁)。获取锁后,读取二进制日志对应的内容并释放锁。因此,当且仅当发出 FLUSH... 时正在执行长更新语句时,MySQL 服务器才会停止,直到长语句结束,然后转储会释放锁。所以如果MySQL服务器只接收短的(“短执行时间”)更新语句,即使有大量的语句,它也不会注意到锁期。
对于点对点恢复(也称为“前滚”,当您需要恢复旧备份并重播该备份的未来更改时),轮换二进制日志或至少知道二进制文件的内容非常有用对应转储的日志:
或者
如果表存储在存储引擎中,则使用--data和--提供了一种方便的方法来执行适合点对点恢复的在线备份。
扫一扫在手机端查看
-
Tags : mysql MySQL工具系列 – mysqldump:数据
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。