如何从所有数据库的mysqldump中还原一个数据库

时间:2020-07-27 12:59:07  来源:igfitidea点击:

在本教程中,我们将学习如何从包含多个数据库的MySQL备份文件中还原单个MySQL数据库。

如果使用--all-databases选项备份mysql/mariadb服务器中的所有数据库,何时何时备份何时备份何种数据库,现在要从所有数据库备份文件还原一个数据库?

在还原数据库时,最简单的方法是使用mysql命令的-o或者-one-data database选项。

mysql -p -o database_name < all_databases.sql

Database_Name是我们要还原的数据库,All_databases.sql是包含所有数据库或者多个数据库的MySQL备份文件。

示例:使用mysql --one-database还原一个数据库

例如,假设我们使用mysqldump命令备份MySQL/MariaDB服务器中的所有数据库。

mysqldump -p --all-databases > all_databases.sql

现在,我们要从转储文件中还原一个名为DB1的数据库。

mysql -p --one-database db1 < all_databases.sql

上面的命令将从ALL_DATABASES.SQL文件恢复数据库DB1.

使用sed命令提取一个数据库

另一个选项是使用SED命令从MySQLDUMP文件中提取要还原的数据库,然后使用MySQL命令还原数据库。

sed -n '/^-- Current Database: `db_name`/,/^-- Current Database: `/p' all_databases.sql > db.sql

db_name是要提取的数据库的名称,all_databases.sql是包含所有数据库和db.sql的mysql备份文件是输出文件。

例子

在以下示例中,我将使用sed命令从大mysql转储文件中提取名为'database1'的数据库。

sed -n '/^-- Current Database: `database1`/,/^-- Current Database: `/p' all_databases.sql > database1.sql

这将从ALL_DATABASES.SQL转储中提取数据库1并将其输出到Database1.sql文件。
然后,我可以使用mysql命令恢复database1.

mysql -p database1 < database1.sql

将使用Database1.SQL备份文件还原数据库database1。