首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >mysql恢复到不同的数据库

mysql恢复到不同的数据库
EN

Stack Overflow用户
提问于 2012-01-26 16:29:00
回答 4查看 62.9K关注 0票数 25

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

代码语言:javascript
复制
mysqldump -u root --opt --skip-extended-insert --databases my_production_db

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

代码语言:javascript
复制
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `my_production_db` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `my_production_db `;

以便将数据库恢复到不同的目的地ie。my_debvelopment_db我必须打开转储文件并编辑数据库命名处的bits。

然后我运行:

代码语言:javascript
复制
mysql -u root  -p <password> < mydumpfile

我没有想出另一种方法来做这件事。

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

我是不是遗漏了什么?我不能以某种方式指定我想要恢复数据库的位置吗?我是否需要不同的备份命令?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-31 12:42:12

如果您删除了选项--databases,但仍然指定了数据库名称,那么您将不会得到create database语句。即:

代码语言:javascript
复制
mysqldump -u root --opt --skip-extended-insert  my_production_db

在您的dev机器上,只需创建您希望恢复到的任何数据库。

票数 16
EN

Stack Overflow用户

发布于 2012-01-31 13:02:01

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

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

因此,不使用--databases关键字进行转储。

代码语言:javascript
复制
mysqldump -u username -p database_name > dump.sql

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

代码语言:javascript
复制
mysql -u username -p target_database_name < dump.sql

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

票数 53
EN

Stack Overflow用户

发布于 2015-08-27 18:31:12

如果你已经有了转储文件,你可以去掉创建和使用数据库的命令。只需删除第四行和新的第五行。

代码语言:javascript
复制
sed '4d' dump.sql | sed '5d' > dump-striped.sql
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9015474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档