2013-04-23 45 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

相关问题