次要失败后,主要副本集服务器变为次要服务器

Ser*_*rán 7 mongodb

我有一个 2 个服务器副本集,在辅助节点失败后,主节点进入辅助模式,而辅助节点处于 STARTUP2(正在恢复)。问题是我不能自由使用存储在该副本集中的集合,我在尝试使用该集合时遇到错误:

pymongo.errors.OperationFailure: database error: ReplicaSetMonitor no master found for set: rs2
Run Code Online (Sandbox Code Playgroud)

有时,如果我重新启动 mongod 实例,服务器 rs2-1 有一段时间是主服务器,但一段时间后(当辅助服务器正在恢复时)我会在 rs2-1(主服务器)的日志中看到这一点:

Tue May  7 17:43:40.677 [rsHealthPoll] replSet member XXX.XXX.XXX.XXX:27017 is now in state DOWN
Tue May  7 17:43:40.677 [rsMgr] can't see a majority of the set, relinquishing primary
Tue May  7 17:43:40.682 [rsMgr] replSet relinquishing primary state
Tue May  7 17:43:40.682 [rsMgr] replSet SECONDARY
Tue May  7 17:43:40.682 [rsMgr] replSet closing client sockets after relinquishing primary
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以在辅助节点失败后使主要节点保持主要状态?难道我做错了什么?

提前致谢!

lon*_*eck 1

\n

注意\xc2\xa0虽然不建议\xc2\xa0,但副本集支持的\xc2\xa0最小配置包括一个\xc2\xa0primary、一个\xc2\xa0secondary和一个\xc2\xa0arbiter。仲裁器需要更少的资源并降低成本,但会牺牲操作灵活性和冗余性。

\n
\n\n

来自http://docs.mongodb.org/manual/core/replica-set-architectures/

\n\n

您没有足够的成员来维持法定人数

\n

  • 事实并非如此,因为如果其中一台数据承载服务器发生故障,您就不再有任何数据冗余。 (2认同)