首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >远程服务器中具有索引的本地MongoDB实例

远程服务器中具有索引的本地MongoDB实例
EN

Stack Overflow用户
提问于 2014-06-21 04:02:47
回答 2查看 291关注 0票数 2

我们的一个客户端有一个运行MongoDB实例的服务器,我们必须使用存储在他们的MongoDB数据库中的数据构建一个分析应用程序,这个数据库经常变化。

客户端的需求是:

  • 我们不会直接连接到他们的MongoDB实例,也不会在他们的服务器上运行另一个MongoDB实例,而只是在我们办公室的机器上使用远程只读访问的MongoDB数据库目录运行我们自己的MongoDB实例。

我们建议部署REST应用程序,获取数据库转储的副本,但他们不想这样做。他们只想让我们运行我们自己的MongoDB意图,它与MongoDB实例目录连接在一起。这有可能吗?

在过去的两天里,我一直在寻找解决方案,我们必须在星期一之前提交一个解决方案。我真的需要一些帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-21 09:13:04

我认为这是正常的请求,因为分析性查询可能会给生产服务器带来太多的负载。分离生产和分析数据库是很正常的。

最简单的选择是使用MongoDB复制。将MongoDB 复制集设置为以生产数据库实例为主实例,以分析数据库实例为辅助实例,并将分析实例配置为永不成为主实例。

如果无法使用复制-例如客户端不希望这样,服务器不能直接连接到对方.-还有另一种选择。您可以通过从远程数据库读取oplog并将操作应用于数据库实例。这正是复制集工作的低层次机制,但您也可以手动完成。例如,MMS ()备份使用读取oplog进行MongoDB的在线备份。

更新: 蒙哥布格可能是本地服务器上从远程服务器上提取复制oplog的实时应用的正确工具。

票数 2
EN

Stack Overflow用户

发布于 2014-06-21 08:55:03

我不认为运行指向相同数据库文件的两个数据库是可能的,甚至是不建议的。

您可以使用mongorestore直接从他们的数据文件中恢复,但是只有当他们的mongod实例没有运行时(因为mongorestore需要锁定目录),这才能工作。

另一个解决方案是执行文件系统快照,然后恢复到本地数据库。

这种备份/还原解决方案的缺点是,您的数据不会一直被同步。

最好的解决方案可能是使用带有隐藏成员的副本集。您可以只使用两个成员创建一个副本集:

  1. 主-这将是客户端服务器。
  2. 次要隐藏的,投票和优先级设置为0。这将是您的本地实例。

它们的服务器将始终是主服务器(因为隐藏的成员不能成为主服务器)。客户端无法看到隐藏的成员,因此对于所有意图和目的,您的服务器将只被读取。另一个好处是,MongoDB复制将完成服务器之间同步数据的所有“繁重”工作,并且您的实例将始终拥有最新的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24338153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档