[英]How can I tell which secondary the MongoDB PHP driver is reading from?
我使用傳統的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-> getConnections(),MongoClient-> getHosts(),“serversatus”和“replSetGetStatus”,但找不到任何告訴我哪個輔助提供數據的東西。
如果只是為了驗證您的代碼是否正在讀取正確的服務器,那么mongodb.log是正確的查找位置。 您將看到誰連接到節點及其IP地址。
此外,您可以通過設置打開分析:
db.setProfilingLevel(2);
記錄客戶的所有操作。 要小心,因為這樣會大大降低性能。 把它關掉:
db.setProfilingLevel(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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.