mongodb - MongoDB:跨多个分片复制块
问题描述
我已经部署了一个 MongoDB 分片集群,该集群由三个副本集(config
、dbms1
、dbms2
)组成,每个副本集都有一个节点,基于this。
该字段mydb.article.category
正好有两个可能的值"science"
和"technology"
。我必须根据这个字段创建两个块,这样
chunk1
存储在dbms1
并且dbms2
chunk2
存储在dbms2
我已经能够像这样在分片中分布这两个块:
> sh.status()
...
shards:
{ "_id" : "dbms1", "host" : "dbms1/172.18.0.23:27017", "state" : 1 }
{ "_id" : "dbms2", "host" : "dbms2/172.18.0.24:27017", "state" : 1 }
...
> sh.enableSharding("mydb")
> sh.shardCollection("mydb.article", { category : 1 })
> sh.disableBalancing("mydb.article")
> sh.splitAt("mydb.article", { category: "science" })
> sh.splitAt("mydb.article", { category: "technology" })
> sh.moveChunk("mydb.article", { category: "science" }, "dbms1")
> sh.moveChunk("mydb.article", { category: "technology" }, "dbms2")
> sh.status()
...
db.article
...
{ "category" : { "$minKey" : 1 } } -->> { "category" : "science" } on : dbms1 Timestamp(2, 1)
{ "category" : "science" } -->> { "category" : "technology" } on : dbms1 Timestamp(1, 3)
{ "category" : "technology" } -->> { "category" : { "$maxKey" : 1 } } on : dbms2 Timestamp(2, 0)
但是,我无法弄清楚如何chunk1
在dbms2
.
我的印象是这在 mongo 级别上是不可能的,因为 mongo 的分片似乎高于复制,即不可能跨副本集进行复制。有哪些替代方法可以实现此设置?
(这是一个关于分布式数据库的学校项目。)
解决方案
推荐阅读
- android - 如何修复插件 GsonFormat 不起作用?
- ffmpeg - ffmpeg h264 有趣的明亮视频失败?
- typescript - 如何从 threeJs 包中获取 TypeScript 类型?
- python - ConnectionPatch 在交叉轴时中断 constrained_layout
- html - 在 EDGAR 网站上查找快速搜索文本框的 value 属性
- c++ - 获取访问冲突读取位置但不确定原因
- android - 带有png源的androidx小部件AppCompatImageView不会在棒棒糖设备中膨胀?
- powershell - 为什么我的 DateTime 对象的行为不同?
- c# - C# (.NET) WebAPI:在调用堆栈中显示更多项目
- sql - 如何遍历 CTE 中的每个值