簡體   English   中英

mysql還原到不同的數據庫

[英]mysql restore to different database

我使用以下命令備份我的生產數據庫:

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

我還沒想出另一種方法。

隨着數據庫變大,這變得不切實際。

我錯過了什么嗎? 不能我以某種方式指定我想要恢復數據庫的位置? 我需要一個不同的備份命令嗎?

@minaz的答案很好,但我想補充一點。

問題是由--databases關鍵字引起的。 如果省略該關鍵字,則不包含任何數據庫創建內容。

所以,轉儲沒有--databases關鍵字。

mysqldump -u username -p database_name > dump.sql

並使用目標數據庫名稱還原它。

mysql -u username -p target_database_name < dump.sql

此外,有幾種方法可以做到這一點。 這里看到類似的問題(dba.stackexchange)。

如果刪除選項--databases但仍指定數據庫名稱,則不會獲得create database語句。 即:

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

在您的開發機器上,只需創建您想要還原到的任何數據庫。

如果您已經擁有轉儲,則可以刪除用於創建和使用數據庫的命令。 只需刪除第四行和第五行即可。

sed '4d' dump.sql | sed '5d' > dump-striped.sql

在Windows xampp上,我使用以下命令來實現此目的

出口

mysqldump -u root -p mydb > mydb.sql

進口

mysql -u root -p mynewdb < mydb.sql

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM