MongoDB: репликация фрагмента через несколько шардов - PullRequest
0 голосов
/ 12 декабря 2018

Я развернул защищенный кластер MongoDB, состоящий из трех наборов реплик (config, dbms1, dbms2), с одним узлом в каждом на основе этого .

Поле 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.

У меня сложилось впечатление, что это невозможно на уровне монго, так как шардинг монго, кажется, выше репликации, то есть невозможно реплицировать через наборы реплик.Какие есть альтернативы для достижения этой настройки?

(Это для школьного проекта о распределенных базах данных.)

...