背景:我曾经有一个本地mongo服务器,但它偶尔会崩溃,我的所有应用程序都停止工作+我不得不“修复”数据库重新启动它。然后我切换到我非常满意的mongolab,但它产生了很多流量,我想通过拥有本地“缓存”来避免,但不必担心我的本地缓存崩溃导致我的所有应用程序停止工作。 DB相对较小,因此大小不是问题。我并没有试图消除与mongolab通信的流量开销,只是降低了一点。
答案 0 :(得分:2)
我假设您不希望mongolab实例只是副本集的一部分(或者可能不提供)。最简单的方法是将远程mongod实例添加为hidden member(优先级0),并让它从本地实例复制数据。
您可以使用的另一种直接解决方案是mongooplog
,它可用于在一台服务器上轮询oplog,然后将其应用到另一台服务器上。基本上按需复制(您需要适当地播种一个实例等,并且需要管理任何故障)。更多信息:
http://docs.mongodb.org/manual/reference/mongooplog/
最后一个选项是使用您选择的语言tailable cursor自己编写内容,将oplog数据提供给远程实例。