首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用sh.addTagRange命令向标记添加范围

无法使用sh.addTagRange命令向标记添加范围
EN

Database Administration用户
提问于 2018-09-03 14:43:20
回答 1查看 319关注 0票数 0

设置了一个4节点测试碎片集群:

  • 1-芒戈斯
  • 1-配置服务器
  • 2-存储一个集合的每个碎片的碎片节点。

集群运行得很好,但是当尝试运行以下命令时:

代码语言:javascript
复制
mongos> sh.addTagRange("HTMLDumps.HTMLRepository", { ShardMapId: "7" }, { ShardMapId: "11" }, "NRT")

 "errmsg" : "min: { ShardMapId: \"7\" } should be less than max: { ShardMapId: \"11\" }",
        "code" : 9,
        "codeName" : "FailedToParse",

下面是碎片状态输出:

代码语言:javascript
复制
databases:
        {  "_id" : "HTMLDumps",  "primary" : "shard0001",  "partitioned" : true }
                HTMLDumps.HTMLRepository
                        shard key: { "ShardMapId" : 1 }
                        unique: false
                        balancing: true
                        chunks:
                                shard0000       2
                                shard0001       2
                        { "ShardMapId" : { "$minKey" : 1 } } -->> { "ShardMapId" : "" } on : shard0001 Timestamp(3, 1)
                        { "ShardMapId" : "" } -->> { "ShardMapId" : "1" } on : shard0001 Timestamp(1, 2) jumbo
                        { "ShardMapId" : "1" } -->> { "ShardMapId" : "7" } on : shard0000 Timestamp(2, 0)
                        { "ShardMapId" : "7" } -->> { "ShardMapId" : { "$maxKey" : 1 } } on : shard0000 Timestamp(3, 0)

标签: NYC { "ShardMapId“:"1”}->>{ "ShardMapId“:"7”}

,我错过了什么?

完整的sh.status输出:

EN

回答 1

Database Administration用户

发布于 2018-09-04 07:30:53

Shard (tag)范围要求为一个碎片键值范围指定minimummaximum边界。

因为您的切分键值当前是字符串,所以它们将是使用二进制顺序的比较而不是数字顺序。错误消息正确地指示最小值"7“(字符串)不小于"11”(字符串)的值。例如,给定字符串"1“、"7”和"11",使用二进制字符串比较的预期升序排序结果是"1“、"11”和"7“。这大致是字母顺序,但更具体地说,MongoDB中的字符串存储为UTF-8字节。

由于您打算使用区域分割,对于这个测试部署,最好有数字切分键值,这样您就可以为您的区域使用1-7的范围。您可以删除和替换现有文档,也可以使用所需的切分键值添加更多的文档。

我假设您并不关心测试集群的切分键的基数,但是对于真正的部署,如果选择一个更合适的碎片键的值范围很小,您可能希望使用ShardMapId

注意:标记感知分片是由分带在MongoDB 3.4中继承的.sh.addTagRange() shell助手已经别名为现代的sh.updateZoneKeyRange(),但为了安全起见,我建议使用较新的帮助程序。您还应该确保您的shell version()与服务器db.version()匹配。

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

https://dba.stackexchange.com/questions/216592

复制
相关文章

相似问题

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