2011-04-25 130 views
0

我有兩個mysql數據庫,一個是測試&其他是生產(它們位於兩個不同的服務器上),我想將少量用戶從測試遷移到生產。將數據從一個數據庫複製到另一個數據庫

有幾個表通過主鍵&關聯(因此重複條目不應該存儲)。

什麼是最好的實施方式?任何查詢樣本?

+0

你想要做什麼?也許保持測試和生產服務器同步? – blankabout 2011-04-25 22:59:50

+0

例如,有1000個prod.users和200個測試用戶,我想將這200個用戶數據移動到prod。 – Sharpeye500 2011-04-25 23:08:55

回答

0

最簡單的方法是使用聯邦引擎設置一些表格,以便您可以簡單地複製數據,執行任何您需要的檢查以防止重複。

首先檢查是否有可用的聯邦引擎,在MySQL外殼中做「秀引擎」,希望你會有這樣一行:

FEDERATED | YES | Federated MySQL storage engine| NO | NO | NO ||

如果沒有,嘗試字當頭「聯合」的本身在你的my.cnf文件中(通常在/ etc中),然後停止&重新啓動mysqld服務。

如果守護進程沒有重啓,那麼您的安裝沒有聯合插件,請從my.cnf中取出該行以啓用重啓。如果是這種情況,那麼你必須下載,安裝並啓用插件。

一旦你可用你可以設置表這樣的發動機:

 
create table tb1 (col1 varchar(10)) ENGINE=FEDERATED CONNECTION='mysql://mysqlusername:[email protected]:3306/databasename/tablename'; 
凡在聯合(本地)表中的列是相同的遠程表中的列到你正在連接。

運行'create table'命令後,運行'show create table ...'並確保聯合引擎確實被使用,因爲如果出現錯誤,MySQL將使用MyISAM引擎而不發出消息在配置中。

確保您已在數據庫上設置權限以允許從遠程系統登錄。

就是這樣,一旦聯邦表成立,它可以被讀取爲&,就好像它是本地的(但不要忘記,如果你鏈接到你的生產數據庫,那麼你正在處理真實的數據! )。

+0

我沒有使用聯合引擎,你有一些例子嗎? – Sharpeye500 2011-04-26 00:27:15

相關問題