У кусков MongoDB Shard уже есть идентично - PullRequest
0 голосов
/ 24 августа 2018

У нас есть осколок MongoDB, настроенный на 4 осколка (A, B, C, D).Осколок D был добавлен после A, B, C.Некоторые коллекции правильно сбалансированы с D, но только у одной коллекции есть проблемы с миграцией.

В журналах D все время отображается это сообщение.

W SHARDING [migrateThread] Не удается получить чанк [{_id: ObjectId ('5ad5586b7ee7821b48139cfb')}, {_id: ObjectId ('5ad6d2d77ee78222283cc9d5')}) для продуктов сбора, потому что у нас уже есть коллекция с идентичным именем с UUID25a21963-d9ba-4022-becc-648d4d39a68c.Вручную отбросьте коллекцию на этот осколок, если он содержит данные из предыдущего воплощения продуктов.

Я понимаю ошибку, но не знаю, как это сделать.Если я захожу в mongos и использую status (), продукты коллекции не отображаются на осколке D, а в журналах говорят об обратном.Я не знаю, если я соединяюсь с осколком D и запускаю db.products.drop (), это действие удаляется только на D или во всех осколках?

1 Ответ

0 голосов
/ 15 ноября 2018

Да, вам нужно подключиться напрямую к осколку D и выбросить туда коллекцию, которая НЕ будет выпадать из других осколков.Затем, когда балансировщик снова запустится, он сможет создать саму коллекцию.Каким-то образом коллекция была там на наборе реплик, прежде чем она была добавлена ​​как осколок.(Вы также можете захотеть сделать mongodump непосредственно из набора реплики сегмента (не mongos), на случай, если там есть данные, которые вам нужны.

...