mysql如何恢复到不同的数据库?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

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

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

我还没想出别的办法。

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

我是不是遗漏了什么?我不能以某种方式指定还原数据库的位置吗?我需要另一个备用命令吗?

提问于
用户回答回答于

如果你放弃这个选项--databases但是仍然指定数据库名,将不会得到CREATEDATABASE语句:

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

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

用户回答回答于

这个问题是由--databases关键词。如果省略关键字,它将不包含任何数据库创建内容。

所以,废弃--databases关键词。

mysqldump -u username -p database_name > dump.sql

并使用目标数据库名还原它。

mysql -u username -p target_database_name < dump.sql

扫码关注云+社区