2012-03-15 55 views
0

我將mongodb環境從複製集切換到通過mongos使用複製集進行分片。我有3個rep-set(A,B,C),我切換到S1(A,B); S2(C,D),mongoS在A,B,C,D上運行。如果我擺脫Mongos replicaset

當我連接到我的舊制度,我連爲跟着

new Mongo("mongodb://A,B,C", array("replicaSet" => "repset-name")); 

現在我試圖在同一與mongoS至極拋出INTERAL服務器錯誤

new Mongo("mongodb://A,B,C,D", array("replicaSet" => "repset-name")); 

的「副本集」選項,它再次工作。

new Mongo("mongodb://A,B,C,D") 

我想知道沒有「replicaSet」選項集如果mongoS現在平衡在碎片(例如S1 A和B之間的平衡)的REP-組之間的讀出?

順便說一句,pymongo以相同的方式與pymongo.errors.AutoReconnect「沒有與主機名關聯的地址」作出反應。

THX

+0

將slaveOk設置爲true以將讀取分配給輔助節點 – CesarTrigo 2014-11-15 16:44:19

回答

2

正確的,一旦你分片,你應該將驅動程序連接到mongos就好像它是一臺服務器。 Mongos現在負責在集羣的初級和次級中分配讀寫操作。如果要mongos將讀取分配給輔助節點,請將slaveOk設置爲True。