gpt4 book ai didi

mongodb - 无法分片数据

转载 作者:行者123 更新时间:2023-12-04 19:19:22 26 4
gpt4 key购买 nike

我遇到了一个关于 MongoDB 分片的问题。
我的测试设置如下 -

1.Application Server(1 server) - 我的应用程序在哪里运行。

2.MongoS & Router(1台服务器)

3.Two Shards-Primary shard 包含完整的DB & Secondary shard 只是空白。

有一个名为“DEMO”的集合,其中包含以下数据 -

"_id" : ObjectId("541c2df0e4b06af824c2c046"),
"country" : "INDIA",

"deviceType" : "manu-laptop",
"osVersion" : "patanahi",

"logtime" : {
"logtime" : ISODate("2014-09-19T13:21:52.596Z"),
"logtimeStr" : "19-09-2014 06:51:52",
"day" : 19,
"month" : 9,
"year" : 2014,
"hour" : 18,
"min" : 51,
"second" : 52
},

"countryId" : "511d0f28c3c4e5cc447c8dac"

有两个国家-印度和中国。
我已经分片了国家 key 。
我用来分片 key 的命令是
db.runCommand({shardcollection:"demo.db",key:{"country" : 1}});

但是当我在 Mongos 上运行负载时,它只会将数据保留在主分片上,而不会将其路由到第二个分片。

用例如下-
我想将印度数据保留在一个分片上,将中国数据保留在另一个分片上。
请帮忙。

设置已完成,并且运行良好。
      --- Sharding Status ---
sharding version: {
"_id" : 1,
"version" : 3,
"minCompatibleVersion" : 3,
"currentVersion" : 4,
"clusterId" : ObjectId("541bf31a8c554f2e2d4e1ad4")
}
shards:
{ "_id" : "shard0000", "host" : "xx.xx.xx.xx:27017", "tags" : [ "INDIA" ] }
{ "_id" : "shard0001", "host" : "xx.xx.xx.xx:27017", "tags" : [ "USA" ] }
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "demo", "partitioned" : true, "primary" : "shard0000" }
demo.device
shard key: { "country" : 1 }
chunks:
shard0001 1
shard0000 1
{ "country" : { "$minKey" : 1 } } -->> { "country" : "INDIA" } on : shard0001 Timestamp(2, 0)
{ "country" : "INDIA" } -->> { "country" : { "$maxKey" : 1 } } on : shard0000 Timestamp(2, 1)
demo.incoming_request_log
shard key: { "regionId" : 1 }
chunks:
shard0001 2
shard0000 3
{ "regionId" : { "$minKey" : 1 } } -->> { "regionId" : 0 } on : shard0001 Timestamp(2, 0)
{ "regionId" : 0 } -->> { "regionId" : 2 } on : shard0000 Timestamp(3, 1)
{ "regionId" : 2 } -->> { "regionId" : "0" } on : shard0000 Timestamp(2, 2)
{ "regionId" : "0" } -->> { "regionId" : "2" } on : shard0000 Timestamp(2, 4)
{ "regionId" : "2" } -->> { "regionId" : { "$maxKey" : 1 } } on : shard0001 Timestamp(3, 0)
tag: INDIA { "regionId" : "0" } -->> { "regionId" : "1" }
tag: USA { "regionId" : "2" } -->> { "regionId" : "3" }
{ "_id" : "demo;", "partitioned" : false, "primary" : "shard0001" }

最佳答案

这就是我为解决问题所做的 -

1.我使用以下命令删除了所有标签-(这只是一个测试环境,所以我不介意删除它)

sh.removeShardTag("shard0000", "INDIA")

2.从配置数据库“标签”集合中删除标签。

3.使用以下命令添加了一个新的范围标签-
sh.addShardTag("shard0001", "INDIA")

4.添加标签范围-
sh.addTagRange("demo.incoming_request_log", { regionId: 5 }, { regionId: 9 }, "INDIA")

注意-我想将所有请求路由到 shard1,其中 regionId 是标记的 shard key。所以现在所有从 Mongos 到演示数据库的请求和传入请求日志,其中 regionId 在 5 到 9 之间,都转到 shard1,其他的到 shard0。

关于mongodb - 无法分片数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25935274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com