MonogoDB副本集状态不从启动更改为辅助

时间:2016-04-30 08:21:50

标签: mongodb database-replication replicaset

我已经设置了一个包含3个节点的MongoDB副本集(vm'运行CentOS)。一个节点成为主要的其他2个陷入启动。当这两个节点将其状态从启动更改为次要时。

aryabhata:PRIMARY> rs.status()
{
    "set" : "aryabhata",
    "date" : ISODate("2016-04-30T08:10:45.173Z"),
    "myState" : 1,
    "members" : [
            {
                    "_id" : 0,
                    "name" : "localhost.localdomain:27017",
                    "health" : 1,
                    "state" : 1,
                    "stateStr" : "PRIMARY",
                    "uptime" : 69091,
                    "optime" : Timestamp(1461935462, 1),
                    "optimeDate" : ISODate("2016-04-29T13:11:02Z"),
                    "electionTime" : Timestamp(1461934754, 1),
                    "electionDate" : ISODate("2016-04-29T12:59:14Z"),
                    "configVersion" : 459192,
                    "self" : true
            },
            {
                    "_id" : 1,
                    "name" : "repset1.com:27017",
                    "health" : 1,
                    "state" : 0,
                    "stateStr" : "STARTUP",
                    "uptime" : 92,
                    "optime" : Timestamp(0, 0),
                    "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
                    "lastHeartbeat" : ISODate("2016-04-30T08:10:44.485Z"),
                    "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                    "pingMs" : 0,
                    "configVersion" : -2
            },
            {
                    "_id" : 2,
                    "name" : "repset2.com:27017",
                    "health" : 1,
                    "state" : 0,
                    "stateStr" : "STARTUP",
                    "uptime" : 68382,
                    "lastHeartbeat" : ISODate("2016-04-30T08:10:43.974Z"),
                    "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                    "pingMs" : 0,
                    "configVersion" : -2
            }
    ],
    "ok" : 1
}

3 个答案:

答案 0 :(得分:1)

从初级检查您是否能够连接到辅助

mongo --host repset1.com --port 27017

当上述故障可能是防火墙或BindIP问题时。

检查bind_ip(应为0.0.0.0,在mongodb.conf中更改为127.0.0.1):

netstat -plunt | grep :27017 | grep LISTEN

查看二级日志的日志文件,为什么会被卡住。他们收到了配置详情吗?

尝试重新配置,请参阅mongo replicaset reconfigure

答案 1 :(得分:1)

对我来说,问题是主服务器启用了授权。在这种情况下,次要人员始终留在STARTUP中。

要使用授权,您需要在所有节点(主节点和辅助节点)的配置文件中设置keyFile


在Linux上创建mongodb密钥文件:

openssl rand -base64 741 > mongodb.key
chmod 600 mongodb.key
chown mongod:mongod mongodb.key

mongod.conf文件:

replication:
  replSetName: rs0

security:
  authorization: enabled
  keyFile: /home/mongodb.key

来源MongoDB replica set with simple password authentication

答案 2 :(得分:0)

我的问题解决方案,设置了主要IP地址而不是主机名的IP地址

cfg = rs.conf()
cfg.members[0].host = "public-or-private-primary-ip:27017" 
rs.reconfig(cfg)

该次要状态更改为STARTUP2