簡體   English   中英

Mongodb副本集最初從SECONDARY模式開始

[英]Mongodb replica Set initially starting in SECONDARY Mode

我已經制作了一個具有一個主要,次要和仲裁者的mongodb copysetSet。

我面臨的問題是,當我最初啟動mongodb服務器時,它是在輔助模式下啟動的

最初是在終端上鍵入mongo時顯示為

ubsc:SECONDARY>

我已經使用創建了一個副本集

config = {with all my server details }
rs.reconfig(config)

我也嘗試過使用rs.add(serverhoststr)選項。

這在我的mongo shell輸出和日志文件下面

ubsc:PRIMARY> rs.status()
{
    "set" : "ubsc",
    "date" : ISODate("2013-10-31T19:09:26Z"),
    "myState" : 1,
    "members" : [
        {
            "_id" : 0,
            "name" : "mongoA:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 2210,
            "optime" : Timestamp(1383246016, 1),
            "optimeDate" : ISODate("2013-10-31T19:00:16Z"),
            "self" : true
        },
        {
            "_id" : 1,
            "name" : "mongoB:27018",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 576,
            "optime" : Timestamp(1383246016, 1),
            "optimeDate" : ISODate("2013-10-31T19:00:16Z"),
            "lastHeartbeat" : ISODate("2013-10-31T19:09:26Z"),
            "lastHeartbeatRecv" : ISODate("2013-10-31T19:09:24Z"),
            "pingMs" : 0,
            "syncingTo" : "192.168.2.67:27017"
        },
        {
            "_id" : 2,
            "name" : "mongoC:27019",
            "health" : 1,
            "state" : 10,
            "stateStr" : "ARBITER",
            "uptime" : 550,
            "lastHeartbeat" : ISODate("2013-10-31T19:09:26Z"),
            "lastHeartbeatRecv" : ISODate("2013-10-31T19:09:25Z"),
            "pingMs" : 0
        }
    ],
    "ok" : 1
}

mongodb日志

Fri Nov  1 01:22:00.981 [initandlisten] MongoDB starting : pid=13177 port=27017 dbpath=/data/mongodb 64-bit host=MLDev5
Fri Nov  1 01:22:00.982 [initandlisten] db version v2.4.6
Fri Nov  1 01:22:00.982 [initandlisten] git version: b9925db5eac369d77a3a5f5d98a145eaaacd9673
Fri Nov  1 01:22:00.982 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Fri Nov  1 01:22:00.982 [initandlisten] allocator: tcmalloc
Fri Nov  1 01:22:00.982 [initandlisten] options: { config: "mongod1.conf", dbpath: "/data/mongodb", fork: "true", logpath: "/data/mongodb/mongodb.log", nojournal: "true", port: 27017, replSet: "ubsc", rest: "true" }
Fri Nov  1 01:22:01.000 [initandlisten] waiting for connections on port 27017
Fri Nov  1 01:22:01.004 [websvr] admin web console waiting for connections on port 28017
Fri Nov  1 01:22:01.008 [rsStart] replSet I am MongoA:27017
Fri Nov  1 01:22:01.009 [rsStart] replSet STARTUP2

rs.conf

ubsc:PRIMARY> rs.conf()
{
    "_id" : "ubsc",
    "version" : 10,
    "members" : [
        {
            "_id" : 0,
            "host" : "mongoA:27017"
        },
        {
            "_id" : 1,
            "host" : "mongoB:27018"
        },
        {
            "_id" : 2,
            "host" : "mongoC:27019",
            "arbiterOnly" : true
        }
    ]
}

請讓我知道為什么最初在輔助模式下啟動服務器?

抱歉給大家帶來麻煩,但是找不到任何解決方案

沒問題要解決-這就是副本集的工作方式。

如果沒有選舉,則節點不能成為主節點。 因此,每個節點(除ARBITER以外的其他節點)都會出現並成為SECONDARY,然后它們中的任何一個節點才能成為PRIMARY(通過選舉)。

因此,這是正常且預期的,不是問題,因此沒有解決方案。

您尚未在任何副本集成員上設置優先級,因此MongoDB可以自由選擇將哪個作為主要對象。 就您而言,MongoA。 MongoC是仲裁者,因此無法成為主要仲裁者。

如果您不想強迫成員成為主要成員,請增加其優先級。 默認優先級為1。

為了確保MongoA是主要的:

var cfg = rs.conf()
cfg.members[0].priority = 2
cfg.members[1].priority = 1
rs.reconfig(cfg)

要確保MongoB是主要的:

var cfg = rs.conf()
cfg.members[0].priority = 1
cfg.members[1].priority = 2
rs.reconfig(cfg)

http://docs.mongodb.org/manual/tutorial/force-member-to-be-primary/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM