У меня установлена реплика Mon go в Ubuntu с тремя членами, настроенными для моей информационной системы, и у меня возникают проблемы при попытке обновить MongoDB с версии 3.4 до 3.6
После установки featureCompatibilityVersion
в 3.4 на главном узле и проверяя его на двух ведомых, я начал обновлять ведомые поочередно (я изящно закрыл БД с помощью db.shutdownServer()
, обновил пакеты с помощью apt и запустил службу mongod). Все прошло хорошо, и рабы вернулись во второстепенные государства. Затем я выключил мастер, повторил все шаги по обновлению из официального руководства (https://docs.mongodb.com/manual/release-notes/3.6-upgrade-replica-set/) и попытался снова запустить службу mongod.
Однако, когда я обновлял главный узел, ведомый, который был выбран в качестве нового ведущего, потерпел крах с ошибкой:
[rsSync] Фатальное утверждение 40454 DuplicateKey: E11000 дублированный ключ коллекция ошибок: admin.system.users index: user_1_db_1 dup ключ: {: "john",: "admin"} в src / mongo / db / system_index. cpp 134
I didn ' Это не замечается, и когда старый мастер запускается снова, он тоже падает с той же ошибкой. В моей франти c, пытающейся снова поднять участников, третий участник также был избран мастером на короткое время, прежде чем рухнул с той же ошибкой.
Когда мне удалось поднять первого участника снова в качестве автономного я проверил коллекцию system.users
и обнаружил, что действительно есть два пользователя с одним и тем же именем пользователя для базы данных администратора (я отредактировал части с помощью ...):
{ "_id" : ObjectId("5...8"), "user" : "john", "db" : "admin", "credentials" : { "MONGODB-CR" : "f...c" }, "roles" : [ { "role" : "read", "db" : "admin" } ] }
и
{ "_id" : "admin.john", "user" : "john", "db" : "admin", "credentials" : { "MONGODB-CR" : "f...c" }, "roles" : [ { "role" : "read", "db" : "admin" } ] }
Мой вопрос: как это возможно? Разве mon go не должен мешать кому-то добавлять идентичного пользователя? Или mon go попытался изменить эту коллекцию после обновления и потерпел неудачу? Я использую authSchema версии 3, если это имеет какое-либо значение. Спасибо!