我正在使用传统的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>
答案 0 :(得分:0)
如果只是为了验证您的代码是否正在读取正确的服务器,那么mongodb.log是正确的查找位置。您将看到谁连接到节点及其IP地址。
此外,您可以通过设置启用分析:
db.setProfilingLevel(2);
记录来自客户的所有操作。要小心,因为这样会大大降低性能。把它关掉:
db.setProfilingLevel(0);
如果您正在寻找一种方法来控制哪个辅助服务器应该为特定请求提供服务,那么replica set tag就是您要找的。 p>
答案 1 :(得分:0)
您可以在从光标迭代/读取后调用$cursor->info()
以获取包含host
,port
和connection_type_desc
键的数据结构。 host
和port
键指定哪个MongoDB服务器满足该特定查询。
$cursor = $this->mongoclient->selectDB("test")->selectCollection("test")->find();
$cursor->rewind();
print_r($cursor->info()); //MongoDB Cursor Info