mongo 3.4至3.6升级后的Mongo E11000重复密钥错误收集

时间:2020-01-28 09:57:04

标签: database mongodb database-administration

我在Ubuntu上设置了一个Mongo副本集,并为我的信息系统配置了三个成员,当我尝试将MongoDB从3.4版本升级到3.6时遇到了问题

在主节点上将featureCompatibilityVersion设置为3.4并在两个从属节点上进行检查之后,我开始一个接一个地升级从属节点(我用db.shutdownServer()正常关闭了DB,更新了软件包使用apt并启动mongod服务)。一切都顺利了,奴隶又回到了次级状态。然后,我关闭了主服务器,重复了官方指南(https://docs.mongodb.com/manual/release-notes/3.6-upgrade-replica-set/)的所有升级步骤,并尝试再次启动mongod服务。

但是,当我升级主节点时,被选为新主节点的从节点崩溃并出现错误:

[rsSync]致命断言40454 DuplicateKey:E11000重复密钥错误集合:admin.system.users索引:user_1_db_1 dup密钥:{:“ john”,:“ admin”}在src / mongo / db / system_index.cpp 134

我没有注意到这一点,当旧的主控制器再次启动时,它也因相同的错误而崩溃。在我疯狂试图再次让成员时,第三成员也被选为具有相同错误而崩溃之前短时间内掌握。

当我设法再次使第一个成员成为独立成员时,我检查了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" } ] }

我的问题是那怎么可能? mongo不应阻止某人添加同一用户吗?还是mongo在升级后尝试更改该集合并失败了?我正在使用authSchema版本3,如果有任何区别。谢谢!

0 个答案:

没有答案