副本集配置不兼容

时间:2017-10-05 08:16:16

标签: database mongodb replication replicaset

我正在尝试设置副本集但不成功。

以下是所有服务器/etc/mongodb.conf的配置文件:

security:
  keyFile: /opt/svn/mhealth-server-config/etc/mongokey

replication:
  replSetName: rs0

这是主服务器的rs.status()命令的结果

{
        "set" : "rs0",
        "date" : ISODate("2017-10-05T08:00:57.599Z"),
        "myState" : 1,
        "term" : NumberLong(22),
        "heartbeatIntervalMillis" : NumberLong(2000),
        "optimes" : {
                "lastCommittedOpTime" : {
                        "ts" : Timestamp(1507190457, 90),
                        "t" : NumberLong(22)
                },
                "appliedOpTime" : {
                        "ts" : Timestamp(1507190457, 121),
                        "t" : NumberLong(22)
                },
                "durableOpTime" : {
                        "ts" : Timestamp(1507190457, 90),
                        "t" : NumberLong(22)
                }
        },
        "members" : [
                {
                        "_id" : 0,
                        "name" : "......",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 1256,
                        "optime" : {
                                "ts" : Timestamp(1507190457, 121),
                                "t" : NumberLong(22)
                        },
                        "optimeDate" : ISODate("2017-10-05T08:00:57Z"),
                        "electionTime" : Timestamp(1507189204, 1),
                        "electionDate" : ISODate("2017-10-05T07:40:04Z"),
                        "configVersion" : 1,
                        "self" : true
                }
        ],
        "ok" : 1
}

接下来,我尝试将第二台服务器添加到副本集,它打印出以下错误消息:

{
        "ok" : 0,
        "errmsg" : "Our replica set ID of 58fcaf004dd51cd984051968 did not match that of 13.76.170.50:27017, which is 59d3668ea39e555205ab2761",
        "code" : 103,
        "codeName" : "NewReplicaSetConfigurationIncompatible"
}

很明显,两台服务器都具有相同的副本集名称“rs0”,所以我不知道是什么原因导致了这个问题。我看过this thread但它并没有解决我的问题。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

发现问题是在seconary服务器中,它将'rs1'副本集名称存储在数据路径中,所以即使我在配置文件中放入'rs0'它也不会识别它并仍然以'rs1'开头“

我的解决方案,不是理想的解决方案,但它有效。我从辅助服务器中删除了完整的数据路径,因此它不会记住'rs1',然后再次启动它。