7.4.1 使用 mysqldump 转储 SQL 格式的数据
本节介绍如何使用mysqldump创建 SQL 格式的转储文件。有关重新加载此类转储文件的信息,请参见第 7.4.2 节“重新加载 SQL 格式的备份”。
默认情况下,mysqldump将信息作为 SQL 语句写入标准输出。您可以将输出保存在文件中:
shell> mysqldump [arguments] > file_name
要转储所有数据库,请使用--all-databases选项调用mysqldump:
shell> mysqldump --all-databases > dump.sql
要仅转储特定数据库,请在命令行上命名它们并使用--databases选项:
shell> mysqldump --databases db1 db2 db3 > dump.sql
--databases选项使命令行上的所有名称都被视为数据库名称。如果没有此选项,则mysqldump会将名字当作数据库名称,将其后的名字当作 table 格名称。
对于--all-databases或--databases,mysqldump在每个数据库的转储输出之前写入CREATE DATABASE和USE语句。这样可以确保在重新加载转储文件时,如果不存在转储文件,它将创建每个数据库并将其设置为默认数据库,以便将数据库内容加载到它们所来自的同一数据库中。如果要使转储文件在创建每个数据库之前强制删除每个数据库,请也使用--add-drop-database选项。在这种情况下,mysqldump在每个CREATE DATABASE语句之前写入DROP DATABASE语句。
要转储单个数据库,请在命令行上将其命名:
shell> mysqldump --databases test > dump.sql
在单数据库情况下,可以省略--databases选项:
shell> mysqldump test > dump.sql
前面两个命令之间的区别在于,没有--databases时,转储输出不包含CREATE DATABASE或USE语句。这有几个含义:
-
重新加载转储文件时,必须指定默认数据库名称,以便服务器知道要重新加载的数据库。
-
对于重新加载,您可以指定一个与原始名称不同的数据库名称,这使您可以将数据重新加载到另一个数据库中。
-
如果要重装的数据库不存在,则必须首先创建它。
-
由于输出将不包含CREATE DATABASE语句,因此--add-drop-database选项无效。如果使用它,则不会产生DROP DATABASE语句。
要仅转储数据库中的特定 table,请在数据库名称后的命令行中将其命名:
shell> mysqldump test t1 t3 t7 > dump.sql