Я развернул защищенный кластер 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
.
У меня сложилось впечатление, что это невозможно на уровне монго, так как шардинг монго, кажется, выше репликации, то есть невозможно реплицировать через наборы реплик.Какие есть альтернативы для достижения этой настройки?
(Это для школьного проекта о распределенных базах данных.)