相关的文档10bet官方网站 本手册下载 本手册的摘录

MySQL 8.0参考手册/.../ 使用mysqldump转储SQL格式的数据

7.4.1使用mysqldump转储SQL格式数据

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

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

壳>,mysqldump [参数) >file_name

要转储所有数据库,请调用, mysqldump——所有数据库选择:

Shell > mysqldump——all-databases

若要仅转储特定的数据库,请在命令行中为它们命名并使用——数据库选择:

mysqldump——database db1 db2 db3 > dump.sql

——数据库选项导致命令行上的所有名称都被视为数据库名称。没有这个选项,, mysqldump将第一个名字作为数据库名,将后面的名字作为表名。

——所有数据库——数据库, mysqldump创建数据库使用每个数据库的转储输出之前的语句。这确保在重新加载转储文件时,如果不存在每个数据库,它将创建每个数据库,并将其设置为默认数据库,以便将数据库内容加载到它们来自的同一个数据库中。如果希望在重新创建数据库之前使转储文件强制删除每个数据库,请使用——add-drop-database选择。在这种情况下,, mysqldump写了一删除数据库前每个语句创建数据库声明。

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

Shell > mysqldump——databases test > dump.sql

在单数据库的情况下,允许省略——数据库选择:

mysqldump test > dump.sql

以上两个命令的区别在于没有——数据库时,转储输出包含no创建数据库使用语句。这有几个含义:

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

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

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

  • 因为输出包含no创建数据库声明中——add-drop-database期权没有效果。如果你使用它,它产生不删除数据库声明。

要从数据库中只转储特定的表,请在命令行中按照数据库名称为它们命名:

Shell > mysqldump test t1 t3 t7 > dump.sql

默认情况下,如果在您创建转储文件的服务器上正在使用gtid (gtid_mode =对),, mysqldump包括一个设置@@GLOBAL.gtid_purged语句的输出中添加gtidgtid_executed源服务器上设置为gtid_purged在目标服务器上设置。如果只转储特定的数据库或表,请注意包含的值, mysqldump中包含所有事务的gtidgtid_executed在源服务器上设置,即使是那些更改了的数据库抑制部分,或服务器上没有包含在部分转储中的其他数据库。如果您只在目标服务器上重播一个部分转储文件,那么额外的gtid不会对该服务器的未来操作造成任何问题。但是,如果您在目标服务器上重放包含相同gtid的第二个转储文件(例如,来自同一源服务器的另一个部分转储文件),则任何设置@@GLOBAL.gtid_purged第二个转储文件中的语句失败。要避免此问题,可以设置, mysqldump选项——set-gtid-purged评论输出第二个转储文件而不激活设置@@GLOBAL.gtid_purged语句,或在重新播放转储文件之前手动删除语句。