[英]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.