我们有一个包含对象集合的开发服务器。这些对象的实际积累是一个持续的过程,它在这个本地的开发服务器上运行一个标签、验证等整个过程。一旦这些对象准备好生产,它们就会被添加到生产数据库中,从那时起,生产数据库将在其计算中使用它们。
我正在寻找一种方法来简单地将增量(新对象)添加到生产数据库中,同时将所有其他集合和旧对象保留在同一个集合中。到目前为止,我们使用的是 MySql,所以这个过程只涉及运行 DB 结构和数据同步(为此我们使用了 Navicat)。我们现在正在迁移到 MongoDB,所以这个过程有点棘手。
我对此进行了研究,我认为以下解决方案不符合我的需求:
- 转储开发数据库并使用
mongodump
then将其加载到生产数据库中mongorestore
- 运行
db.copyDatabase
- 实际上用开发数据库的副本替换生产数据库。
这两种解决方案都有问题,因为它们实际上取代了生产数据库,而我只想更新现有集合中的对象。此外,Dev => Production 不适合主从拓扑。
我能想到的最好的事情是:
- 将开发数据库复制到生产实例上的“开发”数据库中。
- 将此开发数据库中的集合复制到实际生产数据库中,并添加一个谓词,即我将仅添加生产数据库中不存在的对象,类似于此解决方案。
我想知道是否有人有更好的解决方案?
如果没有,是否有人有可以执行此操作的脚本?