将数据插入Mongob Shard Cluster?

时间:2018-02-28 08:48:06

标签: mongodb sharding

下面首先是我通过Ops Manager创建的分片群集:

Shard cluster <<

我有2个Mongos和2个Shard(每个shard配置重复集)。我没有配置任何分片键,我的意思是我的群集中没有分片集合esxit。

当我使用mongos插入数据库以进行测试时,数据库只存储一个Shard。

所以我想在插入数据库时​​,数据可以在两个分片上拆分并存储余额。我可以从mongos查询以获得准确的数据。

任何人都有同样的问题吗?

2 个答案:

答案 0 :(得分:0)

您需要实施区域范围,以便根据每个碎片存储数据的范围。

代码波纹管可帮助您创建区域:

对于zone01:

sh.addShardTag("rs1", "zone01")
sh.addTagRange("myDB.col01", { num: 1 }, { num: 10 }, "zone01")

对于zone02:

sh.addShardTag("rs2", "zone02")
sh.addTagRange("myDB.col01", { num: 11 }, { num: 20 }, "zone02")

这将有助于您Manage Shard Zones

答案 1 :(得分:0)

数据库和集合不会自动分片:分片部署可以包含未分片和分片数据。对于给定的数据库,将在primary shard上创建非分片集合。

如果要对集合进行分片,则需要在连接到mongo进程的mongos shell中执行几个步骤以进行分片部署:

有关具体步骤,请参阅MongoDB手册中的Shard a Collection

为数据分发和用例选择一个好的分片键非常重要。选择糟糕的分片键可能会导致数据分布不均或限制分片性能。 MongoDB文档提供了有关选择分片键的注意事项和选项的更多信息。

如果您不确定集合是否收集了分片或想要查看当前数据分布的摘要,则可以在mongo shell中使用db.collection.getShardDistribution()