MongoDB:在多个分片之间复制块

时间:2018-12-12 03:24:41

标签: mongodb replication sharding

我已经部署了一个由三个副本集(configdbms1dbms2)组成的MongoDB分片群集,每个群集基于this有一个节点。

字段mydb.article.category具有两个可能的值"science""technology"。我必须基于该字段创建两个块,

  • chunk1存储在dbms1dbms2
  • 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的分片似乎是在之上复制,即不可能在副本集之间进行复制。有什么替代方法可以实现此设置?

(这是一个有关分布式数据库的学校项目。)

0 个答案:

没有答案