【发布时间】:2014-11-19 19:22:08
【问题描述】:
问题描述
我有一个三成员副本集和一个 php Web 前端,它 a) 写入一条记录,然后 b) 对集合执行 .find() 并返回数据库中的所有文档。
为了更好地理解副本集的工作原理,我做了以下工作:
- 停止了主服务器 (mongohost1) 上的 mongo 服务。网页继续运行。
- 停止了升级为主服务器 (mongohost2) 上的 mongo 服务。此时,即使我有另一个具有相同数据库的 mongo 主机 (mongohost3),PHP Web 应用程序也会失败并显示上述错误消息。
我期待系统至少让我从数据库中读取记录,即使写入失败。
到目前为止我检查过/尝试过的内容:
所有主机都可以访问。我正在尝试从每个框中按主机名 ping 并且一切正常。
这是根据 mongohost3 配置副本集的方式:
jlrs0:SECONDARY> cfg=rs.config()
{
"_id" : "jlrs0",
"version" : 5,
"members" : [
{
"_id" : 0,
"host" : "monghost1.test.mm.org:27017",
"priority" : 3
},
{
"_id" : 1,
"host" : "mongohost2.test.mm.org:27017",
"priority" : 2
},
{
"_id" : 2,
"host" : "mongohost3.test.mm.org:27017",
"priority" : 2
}
]
}
jlrs0:SECONDARY>
以及每个 mongohost3 的副本集中每个成员的状态:
jlrs0:SECONDARY> rs.status()
{
"set" : "jlrs0",
"date" : ISODate("2014-11-19T15:16:21Z"),
"myState" : 2,
"members" : [
{
"_id" : 0,
"name" : "mongohost1.test.mm.org:27017",
"health" : 0,
"state" : 8,
"stateStr" : "(not reachable/healthy)",
"uptime" : 0,
"optime" : Timestamp(1416419914, 1),
"optimeDate" : ISODate("2014-11-19T17:58:34Z"),
"lastHeartbeat" : ISODate("2014-11-19T15:16:20Z"),
"lastHeartbeatRecv" : ISODate("2014-11-19T14:06:49Z"),
"pingMs" : 0
},
{
"_id" : 1,
"name" : "mongohost2.test.mm.org:27017",
"health" : 0,
"state" : 8,
"stateStr" : "(not reachable/healthy)",
"uptime" : 0,
"optime" : Timestamp(1416419914, 5),
"optimeDate" : ISODate("2014-11-19T17:58:34Z"),
"lastHeartbeat" : ISODate("2014-11-19T15:16:17Z"),
"lastHeartbeatRecv" : ISODate("2014-11-19T14:10:58Z"),
"pingMs" : 0
},
{
"_id" : 2,
"name" : "mongohost3.test.mm.org:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 451417,
"optime" : Timestamp(1416419914, 5),
"optimeDate" : ISODate("2014-11-19T17:58:34Z"),
"self" : true
}
],
"ok" : 1
}
这是连接的 PHP 代码:
$m = new MongoClient("mongodb://mongohost1.test.mm.org:27017,mongohost2.test.mm.org:27017,mongohost3.test.mm.org:27017/?replicaSet=jlrs0");
我仍在阅读副本集等内容,因此我确定这是我错过/忽略设置的内容。 例如,我还没有设置仲裁员... 不确定它是否相关,但以防万一,我想我会提到它。我不确定还要检查什么。
谢谢。
【问题讨论】:
标签: mongodb replication ubuntu-14.04 database-replication mongodb-php