我想知道是否有人看到一个问题从3.0.9升级到3.2.8与$外部用户数据库不被复制?
我有一个现有的3.0.9副本集环境运行,没有encryption通信(no-TLS),没有身份validation; 环境工作正常。 但是,当我使用具有TLS和RBAC的3.2.8(使用$ external)进行升级时,集群中的SECONDARY成员似乎没有获得$外部用户数据。
如果我使用我的configuration执行3.2.8的原始安装,它可以正常工作,即连接到副本集的应用程序以及从主要读取/写入的应用程序,或者只是从辅助连接读取可连接和身份validation。 但是,如果我尝试从升级的3.0.9-3.2.8群集中执行相同的操作,connect,auth和read / write从主服务器没有问题,但他们可以连接,但不能连接到辅助服务器。
这是一个已知的错误? 我已经阅读了所有mongodb上的升级文档,但无法find任何人尝试这个。
我遇到的错误是:
test7-mongodb-rs:SECONDARY> db.getSiblingDB("$external").auth( { mechanism: "MONGODB-X509", user: "CN=*******,OU=******,O=**********,L=***,ST=**,C=US@$external" Error: 11 { ok: 0.0, errmsg: "Could not find user CN=*******,OU=******,O=**********,L=***,ST=**,C=US@$external", code: 11 }
0
一些额外的信息似乎很有趣。 如果我使用我的集群成员证书,而不是客户端证书,我可以连接和授权给辅助。 然后,当我在$ external DB上运行getUsers()命令时,会引发以下错误:
test7-mongodb-rs:SECONDARY> db.getSiblingDB("$external").getUsers() 2016-08-17T16:49:56.188-0400 E QUERY Error: not master and slaveOk=false at Error (<anonymous>) at DB.getUsers (src/mongo/shell/db.js:1342:15) at (shell):1:30 at src/mongo/shell/db.js:1342
我也要补充说,一旦我遇到上述问题,如果我停止集群成员,然后删除lib目录并重新启动我的设置,它的工作原理。 所以在3.0.9数据中有一些是导致问题的原因。 我必须在创build新的RBAC之前执行dropAllUsers()吗? 也就是说,是否有默认或隐藏的数据,在3.0.9中创build没有身份validation,以防止升级时发生$外部复制?
更新,我看到了什么问题,但不知道为什么它的一个问题。 主服务器上的“pipe理员”数据库没有被复制。 如果我把它复制到辅助,authentication在那里工作。 现在问题,为什么它不同步这个数据库