【问题标题】:Mongodb: Destination replicaset for database creation in sharded clusterMongodb:在分片集群中创建数据库的目标副本集
【发布时间】:2014-10-05 10:25:18
【问题描述】:

抱歉,我想不出一个更好的标题。情况:

我们有两个副本集 (rs0, rs1),每个副本集有 3 个成员,充当分片集群中的分片。 (连同 3 个配置服务器,以及在我们的应用服务器上运行的 mongos 实例)。

目前我们没有使用 rs1,因为我们还没有达到需要对 dbs 进行分片的地步(副本集在虚拟服务器上运行,rs1 设置为最小规格)。

最近我们通过连接到 mongos 的控制台添加了一个新数据库。 我假设这个 DB 将在 rs0 上创建,但实际上它是在 rs1 上创建的所以这让我想到了几个问题:

  • 从 mongos 实例创建新(非分片)数据库时,哪些规则管理将在哪个分片(副本集)上创建?
  • 这是当前有效的配置吗? (即不同分片上的非分片数据库)。
  • 将新数据库从 rs1 移回 rs0 的最佳方法是什么?

谢谢!

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    在分片集群中,数据库可以分片或不分片,但无论哪种方式,在创建时都会为其分配一个主分片。数据库中未分片的集合存储在主分片上。对于不同的数据库,主分片的选择会有所不同,这是正常的。移动数据库的最佳方法是使用movePrimary 命令。当然,改组数据时要小心;特别是,请确保首先使用removeShard 将分片集合从数据库中排出。文档对迁移有适当的建议。

    【讨论】:

    • 谢谢 - 但是在创建新数据库时,是什么决定了哪个分片用作主分片?似乎是随机选择的。我从来没有使用过 shard rs1,但是当从 mongos 创建一个 db 时突然在那里创建了一个 db。是否记录了为新数据库选择主数据库的机制?创建db的时候可以指定吗?
    • 老实说,我不确定是如何做出选择的。我的猜测是它要么是随机的,要么是循环的。我尝试在代码中四处寻找,但没有很快找到任何东西;也许我以后能找到一些东西。由于数据库是按需创建的,所以我觉得不能在创建数据库的时候指定。
    • 有趣,我想我会使用 movePrimary,下次我创建另一个数据库后立即检查。谢谢 wdberkely!
    • 酷。请记住要小心movePrimary
    猜你喜欢
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多