mysql还原到不同的数据库

时间:2012-01-26 08:29:00

标签: mysql mysqldump

我使用以下命令备份我的生产数据库:

mysqldump -u root --opt --skip-extended-insert --databases my_production_db

生成的转储文件在顶部附近有以下行:

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `my_production_db` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `my_production_db `;

为了将数据库恢复到不同的目的地,即。 my_debvelopment_db我必须打开转储文件并编辑数据库命名的位。

然后我跑:

mysql -u root  -p <password> < mydumpfile

我还没想出另一种方法。

随着数据库变大,这变得不切实际。

我错过了什么吗?不能我以某种方式指定我想要恢复数据库的位置?我需要一个不同的备份命令吗?

3 个答案:

答案 0 :(得分:47)

@minaz的答案很好,但我想补充一点。

问题是由--databases关键字引起的。如果省略该关键字,则不包含任何数据库创建内容。

所以,转储没有--databases关键字。

mysqldump -u username -p database_name > dump.sql

使用目标数据库名称恢复它。

mysql -u username -p target_database_name < dump.sql

此外,有几种方法可以做到这一点。请参阅here(dba.stackexchange)上的类似问题。

答案 1 :(得分:13)

如果删除选项--databases但仍指定数据库名称,则不会获得create database语句。即:

mysqldump -u root --opt --skip-extended-insert  my_production_db

在您的开发机器上,只需创建您想要还原到的任何数据库。

答案 2 :(得分:1)

在Windows xampp上,我使用以下命令来实现此功能

导出

mysqldump -u root -p mydb > mydb.sql

导入

mysql -u root -p mynewdb < mydb.sql