我运行带有 pecl 模块“mongo 1.4.4”的 Apache 2.2.22-13。它连接到 MongoDB 2.4.6 分片集群。
当发生 stepDown 时,mongo 模块似乎停留在主 mongod 节点上,并显示:“PHP 致命错误:未捕获异常‘MongoCursorException’,消息为‘node1.mongodb.cluster:27017:远程服务器已关闭连接’...
为了建立连接,我尝试了以下两种方法:
$m = new MongoClient('mongodb://mongod0.mongodb.cluster, mongod1.mongodb.cluster, mongod2.mongodb.cluster, mongod3.mongodb.cluster', array("replicaSet" => "myrs"));
和
$m = new MongoClient('mongodb://mongos.mongodb.cluster', array("replicaSet" => "myrs"));
在 stepDown 之后,两种方式都会给出相同的错误消息。
对于第一个连接字符串,重新启动 Apache 就足以让一切恢复正常。对于最后一个连接字符串,重新启动却不行:我不再收到任何错误消息,但应该来自 MongoDB 的数据仍然缺失。
提前致谢,
格雷格。
答案1
我将 mongo pecl 模块从 1.4.5 升级到了 1.5.8。此问题已修复。