从`-all-databases` mysql转储中恢复特定数据库

时间:2014-11-26 22:03:12

标签: mysql database mysqldump

正如标题所说,在完成一个完整的mysql备份之后:

mysqldump -uuser -ppass --all-databases > all-dbs.sql

如何从该转储中仅恢复特定数据库?有点像?

mysql -uuser -ppass --restore-db-from-alldbs-backup specific_db < all-dbs.sql

1 个答案:

答案 0 :(得分:1)

MySQL没有提供自动执行此操作的工具。

以下示例输出test数据库但跳过其他数据库。

awk 'BEGIN { do_print=1; } \
    /^CREATE DATABASE/ || /^USE / { \
        if (match($0, "`test`")) { do_print=1; } 
        else { do_print=0; } } \
    { if (do_print) { print; } }' all_dbs.sql \
  | mysql -uuser -ppass

您可能还想考虑使用mydumper,它为所有表输出单个文件,因此可以轻松恢复所需的文件。另请参阅更好的文档:http://centminmod.com/mydumper.html