2016-11-10 60 views
1

我使用傳統的MongoDB驅動程序(1.6.x)連接到MongoDB(2.4.x)複製套件。我在連接字符串中有「?readPreference = secondary」,在副本集上有兩個MongoDB副本。我的連接字符串包含所有服務器:如何判斷MongoDB PHP驅動程序正在讀取哪個輔助文件?

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

我想找出二次讀取來自兩個驗證readPreference工作正常,並計算次級的複製延遲。我試着從管理數據庫中查看MongoClient-> getConnections(),MongoClient-> getHosts(),「serversatus」和「replSetGetStatus」,但找不到任何能告訴我哪個二級數據提供的數據。

回答

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

0

如果只是爲了驗證您的代碼是否正在讀取正確的服務器,mongodb.log是您尋找的正確位置。您將看到誰連接到該節點及其IP地址。

此外,您還可以通過設置打開分析:

db.setProfilingLevel(2); 

來自客戶端記錄所有操作。要小心,因爲這樣會降低性能。關掉它由:

db.setProfilingLevel(0); 

如果你正在尋找一種方式來控制哪些次要應該服務的具體要求,replica set tag是你在找什麼。

相關問題