我使用以下命令备份我的生产数据库:
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 `;
以便将数据库恢复到不同的目的地ie。my_debvelopment_db
我必须打开转储文件并编辑数据库命名处的bits。
然后我运行:
mysql -u root -p <password> < mydumpfile
我没有想出另一种方法来做这件事。
随着数据库变得越来越大,这变得不切实际。
我是不是遗漏了什么?我不能以某种方式指定我想要恢复数据库的位置吗?我是否需要不同的备份命令?
发布于 2012-01-31 12:42:12
如果您删除了选项--databases
,但仍然指定了数据库名称,那么您将不会得到create database语句。即:
mysqldump -u root --opt --skip-extended-insert my_production_db
在您的dev机器上,只需创建您希望恢复到的任何数据库。
发布于 2012-01-31 13:02:01
@minaz的回答很好,但我想补充一点。
该问题是由--databases
关键字引起的。如果省略关键字,它将不包含任何数据库创建内容。
因此,不使用--databases
关键字进行转储。
mysqldump -u username -p database_name > dump.sql
并使用目标数据库名称恢复它。
mysql -u username -p target_database_name < dump.sql
此外,有几种方法可以做到这一点。请参阅here (dba.stackexchange)上的类似问题。
发布于 2015-08-27 18:31:12
如果你已经有了转储文件,你可以去掉创建和使用数据库的命令。只需删除第四行和新的第五行。
sed '4d' dump.sql | sed '5d' > dump-striped.sql
https://stackoverflow.com/questions/9015474
复制相似问题