如何使用mysqldump 从所有数据库的备份中恢复指定的数据库

有时我们可能需要恢复特定的数据库,但唯一可用的备份包含所有数据库。
从备份中恢复所有内容可能不是一种选择。
相反,我们将需要仅恢复特定数据库的能力。
使用 -one-database 选项可以从多个数据库的备份中恢复单个数据库。

要恢复单个数据库,请在重播备份时使用 -one-database 或者 -o 选项:

mysql -uroot -p[pwd] --one-database [db1] < [/path/backup.sql]

上述命令使用root用户账号,密码为pwd,只恢复target_db数据库。
用适合我们需要的值替换这些值。

警告:如果备份包含 DROP DATABASE 语句,例如在设置 --add-drop-database 参数时由 mysqldump 生成的语句,请勿使用此方法。
--one-database 参数只考虑设置为默认的数据库,而不考虑哪个数据库实际受到执行语句的影响。
考虑如下的一系列语句:

DROP DATABASE IF EXISTS db1;
CREATE DATABASE db1;
USE db1;
-- various other statements
DROP DATABASE db2;
CREATE DATABASE db2;
USE db2;
-- various other statements

由于“DROP DATABASE db2;”当 db1 是默认数据库时出现,使用“--one-database db1”将导致 db2 被删除然后重新创建,但没有任何跟随 USE db2 的语句;将被执行。
所以 db2 将是空的。

日期:2020-09-17 00:11:16 来源:oir作者:oir