0

我已经部署了一个带有 3 台服务器的 mongodb 副本集(一台主服务器、一台辅助服务器和一台任意服务器)

服务器 mongoA 位于一台 Linux 机器上,而 mongoB(辅助)和 mongoB(任意)位于另一台 Linux 机器上

如果我从 mongoB Linux 机器启动 Primary 脚本并在 mongoA 上启动 Secondary 和 arbitery,即使 mongo shell 显示 primary,我也无法在 mongoB linux 机器中的 db 下看到我的任何数据(集合),反之亦然工作正常.

日志没有显示任何错误。

请让我知道这是否是 mongob 机器中的预期行为?

这些是从 mongob 收集的我的服务器的统计信息

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

nat:PRIMARY> rs.status()
{
    "set" : "nat",
    "date" : ISODate("2013-11-05T09:57:30Z"),
    "myState" : 1,
    "members" : [
        {
            "_id" : 0,
            "name" : "mongoA:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 216,
            "optime" : Timestamp(1383315218, 1),
            "optimeDate" : ISODate("2013-11-01T14:13:38Z"),
            "self" : true
        },
        {
            "_id" : 1,
            "name" : "mongoB:27018",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 150,
            "optime" : Timestamp(1383315218, 1),
            "optimeDate" : ISODate("2013-11-01T14:13:38Z"),
            "lastHeartbeat" : ISODate("2013-11-05T09:57:28Z"),
            "lastHeartbeatRecv" : ISODate("2013-11-05T09:57:28Z"),
            "pingMs" : 0,
            "syncingTo" : "mongoA:27017"
        },
        {
            "_id" : 2,
            "name" : "mongoB:27019",
            "health" : 1,
            "state" : 7,
            "stateStr" : "ARBITER",
            "uptime" : 134,
            "lastHeartbeat" : ISODate("2013-11-05T09:57:28Z"),
            "lastHeartbeatRecv" : ISODate("2013-11-05T09:57:29Z"),
            "pingMs" : 0
        }
    ],
    "ok" : 1
}
4

2 回答 2

1

在您的rs.status()mongoA:27017 中是主要的,而 mongoB:27018 是次要的。辅助节点的状态是 "syncingTo" : "mongoA:27017" - 这意味着辅助节点仍在同步到主节点 (mongoA)。

您需要等待服务器同步,然后重试。

于 2013-11-05T11:59:08.067 回答
0

您的 rs.status() 输出显示主要和次要应包含相同的数据。因为optime的值在两个节点上是相同的(“ optime ”是指每个节点包含的 oplog 条目)

        "optime" : Timestamp(1383315218, 1),

这意味着您应该在 mongoA 和 mongoB 上看到数据。

尝试运行以下命令以查看您拥有哪些数据库:

show dbs

如果你看到你的应用程序数据库,那么你应该很好。

(否则,请解释您是如何得出数据不存在的结论的)

于 2021-09-25T19:54:17.577 回答