【问题标题】:Splitting MongoDB collections in multiple servers via mongos Router通过 mongos 路由器在多个服务器中拆分 MongoDB 集合
【发布时间】:2012-05-22 14:18:06
【问题描述】:

有一个名为 maindatabase 的 MongoDB 数据库,它有 3 个名为用户、标签和类别的文档集合,我想知道是否可以将它们分别拆分在三个不同的服务器上(在不同的云服务提供商上)。

我的意思不是作为副本,而是只有一个服务器集合(一个服务器上只有类别集合的数据库,另一个服务器上的用户和第三台服务器上的标签)可以由 mongos 路由器有选择地路由.

有人知道这是否可能吗?

【问题讨论】:

  • 使用 mongoid 3.0 是可能的。看github.com/mongoid/mongoid/blob/master/…,搜索store_in
  • 你的意思是下面的 mongoid/CHANGELOG.md 吗? #1291 Mongoid 现在支持 mongoid.yml 中定义的任意数量的数据库连接。例如,您可以在同一个应用程序环境中拥有一个本地单服务器数据库、一个多可用性区域副本集和一个分片集群。 Mongoid 可以在任何时间点连接到任何会话。
  • @LucaGSoave 是的,我指的只是那个。
  • 只是好奇:为什么需要将集合分离到不同的云提供商数据中心?我可以理解以这种方式定位副本集节点并制定 DR 策略,但我很想听听地理上独立的集合商店的价值主张。
  • @DavidMakogon,有一个零预算项目并使用免费的 MongoID 云服务作为 MongoHQ + MongoLab + OtherMongos ...(现在每个人都有免费计划),您可以将数据处理实验扩展到更大的规模单个提供者的限制。如果您没有预算问题,请忘记它 :-) ...除非您像我一样,并且只想玩弄这项出色技术的架构限制:bit.ly/JmzZon

标签: mongodb cloud mongoid mongomapper nosql


【解决方案1】:

除了@matulef 关于通过movePrimary 手动操作数据库的回答之外,也许这需要一个更简单的解决方案,即只维护 3 个数据库连接:每台服务器一个,每个位于您最初指定的不同云提供商的数据中心。您不会拥有单个mongos 连接点的简单性,但是通过您的三个连接,您可以直接在每个连接上操作userstagscategories

【讨论】:

  • 感谢 David 的贡献,我仍然不会关闭这个 Q。直到有其他意见出现......我也必须尝试一下,再次感谢直到现在。
  • 这也是我要走的路。
【解决方案2】:

很遗憾,您目前无法通过这种方式将集合拆分到单个数据库中。但是,如果您将每个集合放在不同的数据库中,则可以执行此操作。在分片系统中,每个数据库都有一个与之关联的“主分片”,该数据库上的所有非分片集合都存在于其中。如果您将 3 个集合分成 3 个不同的数据库,则可以使用“movePrimary”命令将它们分别移动到不同的分片:

http://www.mongodb.org/display/DOCS/movePrimary+Command

但是,创建更多数据库会产生一些开销,因此尚不清楚这是否是满足您需求的最佳解决方案。

【讨论】:

  • 而且 movePrimary 很危险。完成此操作后,您会发现一些 mongoses 看到旧的主要位置,而有些看到新的主要位置。有关此命令中长期存在的问题,请参阅 jira.mongodb.org
猜你喜欢
  • 2020-10-28
  • 1970-01-01
  • 1970-01-01
  • 2021-02-11
  • 2014-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多