如何判断MongoDB PHP驱动程序正在读取哪个辅助节点?

时间:2016-11-10 21:53:38

标签: php mongodb

我正在使用传统的MongoDB驱动程序(1.6.x)连接到MongoDB(2.4.x)复制集。我的连接字符串中有“?readPreference = secondary”,副本集上有两个MongoDB辅助节点。我的连接字符串包括所有服务器:

mongodb://dev-mongo01:27017,dev-mongo02:27017,dev-mongo03:27017/?replicaSet=dev-mongo-replica&readPreference=secondary

我想找出读取来自哪个次要来验证readPreference是否按预期工作并计算辅助复制延迟。我已经尝试从管理数据库查看MongoClient-&gt; getConnections(),MongoClient-&gt; getHosts(),“serversatus”和“replSetGetStatus”,但找不到任何告诉我哪个辅助提供数据的内容。< / p>

2 个答案:

答案 0 :(得分:0)

如果只是为了验证您的代码是否正在读取正确的服务器,那么mongodb.log是正确的查找位置。您将看到谁连接到节点及其IP地址。

此外,您可以通过设置启用分析:

db.setProfilingLevel(2);

记录来自客户的所有操作。要小心,因为这样会大大降低性能。把它关掉:

db.setProfilingLevel(0);

如果您正在寻找一种方法来控制哪个辅助服务器应该为特定请求提供服务,那么replica set tag就是您要找的。

答案 1 :(得分:0)

您可以在从光标迭代/读取后调用$cursor->info()以获取包含hostportconnection_type_desc键的数据结构。 hostport键指定哪个MongoDB服务器满足该特定查询。

$cursor = $this->mongoclient->selectDB("test")->selectCollection("test")->find();
$cursor->rewind();
print_r($cursor->info()); //MongoDB Cursor Info

请参阅http://php.net/manual/en/mongocursor.info.php