【问题标题】:How can I synchronize a production meteor js database with development?如何将生产流星 js 数据库与开发同步?
【发布时间】:2013-04-16 19:13:54
【问题描述】:

我刚刚进入 Meteor,对 MongoDB 也同样陌生。我习惯于同步 MySQL dbs(生产与开发)以使用近乎实时的数据运行新功能的测试。目前,我不知道如何用流星做到这一点。

从这个 (http://docs.meteor.com/#meteormongo) 我了解到我可以使用 mongoDB shell 来处理我的本地数据库,但是从查看http://docs.mongodb.org/manual/mongo/ 来看,我还没有弄清楚这是否是我应该遵循的路径为 Meteor 同步内容。

有没有人为同步 Meteor JS 数据库设置了一个相对简单的过程,或者你能指出我可能帮助我加快速度的资源吗?

【问题讨论】:

  • 澄清一下,我主要对在数据库的不同副本之间移动数据感兴趣(例如在实时/生产和开发之间)。其次,如果有任何方便的 GUI 或关于半自动化策略的想法,那也会很有用。

标签: mongodb meteor data-synchronization


【解决方案1】:

不确定我是否理解了这个问题,但是:

  1. 您可以通过设置MONGO_URL 环境变量来选择您正在使用的数据库
  2. 您可以 dump 来自一个数据库的数据并将其加载到另一个数据库(如果您想要这样做)

【讨论】:

  • 对于#1,您建议我可以在本地主机上工作,但将其配置为使用实时/远程应用程序的数据库?这在某些情况下可能很有用......
  • 是的,像#2 这样的东西更符合我的要求。从您的链接中,我了解到我将在源上使用 mongoexport,在目标上使用 mongoimport,对吗?我可以通过运行“meteor mongo”来获得一个 mongodb shell,然后使用 MONGO_URL 环境变量在源和目标之间切换?
  • 如果你不使用 Meteor 的本地数据库,你甚至不必使用meteor mongo,只需使用mongo 连接到适当的服务器(可能是本地的)。当然,除非您更喜欢使用流星本地数据库进行测试。
【解决方案2】:

有几种有趣的方法可以做到这一点。

我想到的第一个方法是使用副本。

您将拥有一个开发服务器数据库;我指的是专用于容纳开发数据库(例如 AWS 上的云实例)的整个服务器。一旦您希望替换该开发实例,您只需从您的活动集中取出一个成员并将其作为独立实例启动,以替换您的开发实例。

另一种方法是将mongod 目录复制到某个地方并启动mongod。最简单的方法,但可能不是最好的,尤其是如果您有一个大型分布式数据库。

另一种方法是使用mongodump 将数据转储出数据库并将其还原到您的开发机器上。

最后两种是很常用的方法,第一种是我脑子里一直在想的一种。

【讨论】:

  • 有趣的想法 - 谢谢!
【解决方案3】:

我编写了一个用于下载 Production Meteor DB 的快速脚本。 meteor-download。简单如./download.sh origin.meteor.com

它还没有提供 2 路同步,但如果你愿意的话,这应该不会有太大的机会。

【讨论】:

    【解决方案4】:

    查看mongo-sync


    这是我为自己编写的脚本,当时我不得不不断地将本地 MongoDB 数据库复制到我的生产数据库中或从我的生产数据库中复制出来(我知道这很愚蠢)。

    将数据库详细信息放入config.yml 后,您可以使用两个简单的命令开始同步:

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

    如果您在某个项目中使用它,最好将config.yml 添加到.gitignore


    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      相关资源
      最近更新 更多