【问题标题】:Is it possible to replicaset and shard a collection?是否可以复制和分片集合?
【发布时间】:2020-12-14 15:13:23
【问题描述】:

我已经看到,为了进行数据分发,我可以在 ReplicaSet 或 Sharding 之间进行选择。 使用带有这些参数的 mongodb 代码--shardsvr --replSet

mongod --shardsvr --port 27021 --replSet rs1 --dbpath C:\data\data5 --bind_ip localhost

我正在做的是制作一个分片服务器,它也是一个副本集,或者我只是在做一个分片? 如果我不做这两件事我应该写什么?

编辑

mongod --shardsvr --port 27020 --replSet rs1 --dbpath C:\data\data4 --bind_ip localhost
mongod --shardsvr --port 27021 --replSet rs1 --dbpath C:\data\data5 --bind_ip localhost
mongod --shardsvr --port 27022 --replSet rs1 --dbpath C:\data\data6 --bind_ip localhost
mongos --port 40000 --configdb rs0/localhost:27017
mongo --port 40000
rs.initiate( { _id : "rs1",  members: [   { _id: 0, host: "localhost:27020" },   { _id: 1, host: "localhost:27021" },   { _id: 2, host: "localhost:27022" }    ] })
sh.addShard( "rs1/localhost:27020,localhost:27021,localhost:27022")
sh.enableSharding("db")
sh.shardCollection("db.collection", { "_id" : 1 } )

当我执行这种代码时,我得到的是由 3 个“服务器”分片的集合,这些“服务器”也分片和复制集? 并且在 40'000 端口上使用 mongos,我可以连接并进行查询?

【问题讨论】:

  • 好的,谢谢!我会用更好的代码编辑我的问题,所以你可以告诉我它是否有效?请
  • 分片也是副本集。
  • 副本集和分片集群有不同的用途。分片集群中的每个分片都需要是一个副本集。见Sharded Cluster
  • 所以我在这里做的是制作 3 个 mongod 碎片,它们也是副本集。我对吗?您的链接我已经阅读了好几次,但无法正确理解
  • @Minsky,你确定独立配置吗? Release Note for MongoDB 3.4 声明:要将分片集群升级到 3.4 版,配置服务器必须作为副本集运行。

标签: mongodb sharding


【解决方案1】:

副本集和分片有不同的用途:

  • 副本集提供冗余(如果一个节点发生故障,数据也在其他节点上)
  • 分片提供了可扩展性(如果一台服务器的数据过多,可以将其分散到多台服务器上)

当您设置分片集群时,每个分片(理论上)可以由单个节点或副本集支持。 MongoDB 目前要求分片由副本集支持,在旧版本中也允许单个节点。

因此:

  • 具有单节点的分片集群 = 无冗余。每个文档存储一次,如果任何单个节点发生故障,您将丢失数据。但您可以根据部署的分片数量获得可扩展性。
  • 具有备份副本集的分片集群 = 可扩展性和冗余性。

【讨论】:

    【解决方案2】:

    您创建了一个分片,它是一个三成员副本集和一个配置服务器作为单成员副本集。每个分片和每个配置服务器都必须是一个副本集。

    如果您想获得多个分片,那么您必须为 --replSet 使用不同的名称,例如rs1、rs2、rs3。

    在生产中,除非您不关心可用性,否则不应创建单成员副本集。通常你会创建另外 3 个分片节点,然后每个分片也会被复制。

    也许跟着这个教程Deploy a Sharded Cluster

    【讨论】:

    • 在 1-repl 集配置中使用分片有什么用?那里可以进行分片。您需要从副本集中至少一个节点。这就是我的意思...
    猜你喜欢
    • 2019-04-28
    • 2021-08-21
    • 2016-03-22
    • 1970-01-01
    • 2012-12-16
    • 2019-12-11
    • 1970-01-01
    • 2020-11-24
    • 2022-01-04
    相关资源
    最近更新 更多