0

1 つのプライマリ、セカンダリ、およびアービターで mongodb replicaSet を作成しました。

私が直面している問題は、最初にmongodbサーバーを起動すると、セカンダリモードで起動されることです

それは最初に、端末でmongoと入力すると、次のように表示されます

ubsc:SECONDARY>

を使用してレプリカセットを作成しました

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

rs.add(serverhoststr) オプションも使用してみました。

これは私のmongoシェル出力とログファイルの下にあります

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
        }
    ]
}

最初にサーバーがセカンダリ モードで開始される理由を教えてください。

ご迷惑をおかけして申し訳ありませんが、これに対する解決策が見つかりませんでした

4

2 に答える 2

2

どのレプリカ セット メンバーにも優先度を設定していないため、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/

于 2013-10-31T21:12:38.143 に答える