[英]Synchronise two MongoDB collections
我有2个mongodb放在2个不同的服务器中。 每个都有一个收藏items
。 第一个集合具有生产数据,并执行许多insert
和update
,第二个集合为空。
现在,我的任务是将数据从第一个集合传输到第二个集合,并使它们保持同步几个小时。
我们已经实现了oplog
解决方案。 但是由于我们没有权限在第一个mongodb中收听local
集合,因此我们必须找到另一种出路。
我想到的一种方法是创建2个服务:-在第一次调用中,我查询第一个集合中的所有数据并将其传输到第二个集合。 然后,我将该数据保存在内存中。 -在第二次调用中,我查询第一个集合的所有数据,然后使用工具对它们进行比较,然后将差异发送到第二个集合。 -重复直到2个服务之一被取消。
明显的问题是查询和比较数据的资源浪费。
因此,在您需要其他帮助的情况下,我需要您的帮助。
提前致谢。
生命值
您在OP中描述的解决方案:
我想到的一种方法是创建2个服务:-在第一次调用中,我查询第一个集合中的所有数据并将其传输到第二个集合。 然后,我将该数据保存在内存中。 -在第二次调用中,我查询第一个集合的所有数据,然后使用工具对它们进行比较,然后将差异发送到第二个集合。 -重复直到2个服务之一被取消。
……让我认为这是一种蓝/绿部署模型,或者您的意图是在面对第一个系列的Mongo商店丢失时提供弹性。 如果是这样,那么我认为正确的方法是使用Mongo副本集,让Mongo为您提供弹性。
但是,我可能会遗漏某些东西……也许您的情况有一些细节,这些细节(a)我无法从您的问题中推断出来,并且(b)需要某种手动,近乎实时的副本,收集到另一个。 如果是这样,那么我认为oplog解决方案是该用例的通用解决方案。 也许您应该重新审视一下是否可以解决此问题:
我们没有权限在第一个mongodb中收听本地集合
如果那不是真正的竞争者,那么如果您可以拦截对第一个集合的所有写操作(即,如果您的应用程序提供了将行为应用于所有写操作的调节点或钩子),则可以实现以下内容:
例如:
data
的INSERT
123
的DELETE
123
123
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.