2013-04-23 92 views
3

我剛剛進入Meteor,同樣也是MongoDB的新手。我習慣於將MySQL dbs(production vs dev)與近實時數據進行同步運行測試新功能。目前,我不知道如何用流星來做到這一點。 (http://docs.meteor.com/#meteormongo)我知道我可以使用mongoDB shell來處理我的本地數據庫,但從查看http://docs.mongodb.org/manual/mongo/,我還沒有弄清楚這是否應該遵循以下步驟來同步事物爲流星。如何將生產流星js數據庫與開發同步?

有沒有人設立了一個相對簡單的程序來同步流星JS數據庫,或者你可以指點我的資源,可以幫助我加快速度?

+0

爲了澄清,我primari對數據庫不同副本之間的移動數據感興趣(例如,在live/production和dev之間)。其次,如果有任何方便的圖形用戶界面或半自動化策略的想法,那也是有用的。 – RobD 2013-04-23 15:12:06

回答

3

不知道我理解的問題,而是:

  1. 您可以選擇與通過從一個數據庫設置MONGO_URL環境變量
  2. 可以dump數據工作數據庫,並加載到另一個(如果這是你想要做的)
+0

對於#1,您建議我可以在本地主機上工作,但將其配置爲使用實時/遠程應用程序的數據庫?在某些情況下,這可能會有用... – RobD 2013-04-23 15:03:35

+1

是的,類似#2的東西更多是我要找的東西。從你的鏈接中,我知道我將在源碼上使用mongoexport,並在目標上使用mongoimport,對嗎?我可以通過運行'meteor mongo'來獲得mongodb shell,並使用MONGO_URL env變量在源和目標之間切換? – RobD 2013-04-23 15:07:49

+0

如果你不使用Meteor的本地數據庫,你甚至不必使用'meteor mongo',只需將'mongo'連接到適當的服務器(可能是本地的)。除非你更喜歡使用meteor local db進行測試。 – Xyand 2013-04-23 21:19:11

2

有一些有趣的方法可以做到這一點。

我想過的第一種方法是使用副本。

您將擁有一個開發服務器數據庫;我的意思是整個服務器專門用於存放開發數據庫(例如AWS上的雲實例)。一旦您希望替換該開發實例,只需將一個成員從實時集合中取出,並將其作爲替代開發實例的獨立實例啓動。

Anohter方法是將mongod目錄複製到某處並啓動mongod。最簡單的方法,但可能不是最好的,特別是如果你有一個大的分佈式數據庫。

另一種方法是使用mongodump將數據轉儲出數據庫並將其恢復到您的開發計算機上。

最後兩個是非常普遍的方法,第一個是我一直在想的一段時間。

+0

有趣的想法 - 謝謝! – RobD 2013-04-30 12:13:27

2

我寫了一個用於下載Production Meteor DB的快速腳本。 meteor-download。簡單如./download.sh origin.meteor.com

它不提供雙向同步,但如果您感覺它不應該是太多的機會。

3

退房mongo-sync


這是一個腳本,我寫了我自己,當我有我的地方MongoDB數據庫不斷複製,並從我的生產DB的項目(我知道這是愚蠢的)。

一旦你把你的DB細節config.yml,您可以使用兩個簡單的命令開始同步:

./mongo-sync push  # Push DB to Remote 
./mongo-sync pull  # Pull DB to Local 

如果你使用它的一些項目裏面,它的加入config.yml.gitignore

一個好主意

mongo-sync demo gif

相關問題