MySQL 8.0 参考手册  / 第 7 章备份与恢复  / 7.4 使用 mysqldump 进行备份  /  7.4.1 使用 mysqldump 转储 SQL 格式的数据

7.4.1 使用 mysqldump 转储 SQL 格式的数据

本节介绍如何使用mysqldump 创建 SQL 格式的转储文件。有关重新加载此类转储文件的信息,请参阅 第 7.4.2 节,“重新加载 SQL 格式的备份”

默认情况下,mysqldump将信息作为 SQL 语句写入标准输出。您可以将输出保存在文件中:

$> mysqldump [arguments] > file_name

要转储所有数据库,请使用以下选项 调用mysqldump :--all-databases

$> mysqldump --all-databases > dump.sql

要仅转储特定数据库,请在命令行上命名它们并使用以下--databases 选项:

$> mysqldump --databases db1 db2 db3 > dump.sql

--databases选项导致命令行上的所有名称都被视为数据库名称。如果没有此选项,mysqldump会将名字视为数据库名称,将后面的名称视为表名。

使用--all-databasesor --databasesmysqldump 在每个数据库的转储输出之前写入CREATE DATABASE和语句。USE这确保了当重新加载转储文件时,它会创建每个数据库(如果它不存在)并使其成为默认数据库,以便将数据库内容加载到它们来自的同一数据库中。如果要使转储文件在重新创建之前强制删除每个数据库,请同时使用该 --add-drop-database选项。在这种情况下,mysqldumpDROP DATABASE在每个语句之前写一个 CREATE DATABASE语句。

要转储单个数据库,请在命令行上为其命名:

$> mysqldump --databases test > dump.sql

在单数据库的情况下,可以省略该 --databases选项:

$> mysqldump test > dump.sql

前面两个命令之间的区别在于,如果没有--databases,转储输出不包含CREATE DATABASEorUSE 语句。这有几个含义:

  • 重新加载转储文件时,必须指定默认数据库名称,以便服务器知道要重新加载哪个数据库。

  • 对于重新加载,您可以指定一个与原始名称不同的数据库名称,这使您可以将数据重新加载到不同的数据库中。

  • 如果要重新加载的数据库不存在,则必须先创建它。

  • 因为输出不包含CREATE DATABASE语句,所以该 --add-drop-database选项无效。如果你使用它,它不会产生任何 DROP DATABASE声明。

要仅转储数据库中的特定表,请在数据库名称后的命令行中命名它们:

$> mysqldump test t1 t3 t7 > dump.sql