2010-12-10 162 views
12

我有兩臺具有root訪問權限的專用服務器。兩者都在運行Linux。我想從Server1導入數據庫到Server2。我已經在Server2上創建了一個空的數據庫。 我想知道我可以直接導入數據庫的Linux命令?有這樣的特點嗎?我可以使用mysqldump嗎?我想避免先在server1上進行數據庫備份,然後將該文件移動到server2,然後導入該文件。 可以使用某些命令直接導入嗎?將MySQL數據庫從一臺服務器導入到另一臺服務器

感謝

+0

+1我正在尋找相同的 – 2010-12-10 08:15:04

回答

13

如果你想避免創建一個文件,將其轉移,並加載它,你可以管到的mysqldump要麼一個MySQL的其他服務器上運行,或在其他服務器上的SSH的MySQL。

使用MySQL來連接到遠程框:

mysqldump --all-databases | mysql -h yourserver.com 

使用SSH連接到其它服務器

mysqldump --all-databases | ssh [email protected] mysql 

使用mysqldump - 全數據庫,將他們轉移所有,或只指定數據庫名稱。請參閱mysqldump documentation瞭解更多選項。

你也可以使用MySQL的「複製」功能,雖然這需要更多的時間來設置,而且相當棘手。可能不值得所有的時間和麻煩只爲一個單一的遷移。

+0

感謝您的答覆,但我有點困惑,該怎麼做。你能否詳細說明一下?我的意思是,在通過SSH連接後,我應該在Server1上運行第一個命令,在Server2上運行第二個命令? – Ali 2010-12-10 09:46:19

+1

阿里:你可以在Server1上運行這兩個命令。第一個命令將打開一個到服務器2的mysqlconnection(在`-h`之後放置它的名字)。第二個命令將打開一個ssh連接到Server2本身,然後運行`mysql`客戶端應用程序,使用Server1上`mysqldump`的輸出作爲Server2上`mysql`的輸入。因此,傳輸數據庫。 – Konerak 2010-12-10 15:11:16

1
mysqldump –add-drop-table –extended-insert –force –log-error=error.log -uUSER -pPASS OLD_DB_NAME | ssh -C [email protected] 「mysql -uUSER -pPASS NEW_DB_NAME」 

在壓縮SSH隧道轉儲MySQL數據庫,並使用它作爲輸入到MySQL

source

2
在第一服務器上

停止mysqld的,複製的數據目錄(通常的/ var/lib中/ mysql)從服務器1到服務器2,在第二臺服務器上啓動mysqld,現在它將與第一臺服務器相同。

如果您可以在複製數據文件時停止服務器,則不必使用導入/導出工具。特別是如果您可以在複製文件之前壓縮文件,這將是最快的方法。

相關問題