MongoDB同步开发和生产数据库

Ido*_*ohn 5 deployment synchronization mongodb

我们有一个包含对象集合的开发服务器。这些对象的实际积累是一个持续的过程,该过程在此本地dev服务器上运行标记,验证等整个过程。一旦这些对象准备好用于生产,就将它们添加到生产数据库,从那时起,它将在计算中使用它们。

我正在寻找一种将增量(新对象)简单地添加到生产数据库中,同时保留所有其他集合和旧对象在同一集合中的方法。到目前为止,我们一直使用MySql,因此此过程仅涉及运行数据库结构和数据同步(为此,我们使用了Navicat)。我们现在正在迁移到MongoDB,因此此过程有些棘手。

我对此进行了调查,我认为以下解决方案不符合我的需求:

  1. 转储开发数据库并将其加载到生产数据库中,然后使用mongodumpmongorestore
  2. 正在运行db.copyDatabase-实际上是用开发数据库的副本替换生产数据库。

这两种解决方案都是有问题的,因为当我想要做的就是更新现有集合中的对象时,它们实际上替代了生产数据库。同样,进行开发=>生产不适合主从拓扑。

我能想到的最好的事情是:

  1. 将开发数据库复制到生产实例上的“开发”数据库中。
  2. 将集合从该开发数据库复制到实际的生产数据库,并添加一个谓词,即我将仅添加生产数据库中不存在的对象,类似于此解决方案

我想知道是否有人有更好的解决方案?

如果没有,是否有人拥有可以执行此操作的脚本?

Ori*_*Dar 1

您可以使用mongoexport工具从开发数据库中导出单个集合。将其与 --query 选项结合使用,您可以在其中表达谓词。例如诸如此类的东西${ts : {$gt : previous clone time}}

然后,使用mongoimport将增量文件导入生产数据库。如果您有两个具有不同值的不同逻辑文档,但表达相同的文档, 请使用--upsertand--upsertFields_id