2017-08-25 89 views
0

這個問題是關於在連接字符串中指定replicaSetMongoDB連接字符串中的副本集信息

我在彈簧數據定義的下面的連接字符串:

mongodb://userName:[email protected]:port/NameOfDB

此連接字符串定義1個種子服務器和沒有副本集信息。

根據MongoDB documentation, 如果您只提供單個mongod實例的連接點並省略replicaSet,則客戶端將創建獨立連接。

由於連接字符串中還提供了DB,因此如果它在引導期間可用,仍可以從單個種子獲取副本集信息。 我找不到有關它無法從單個種子獲取副本集信息的驅動程序文檔。

由於哪個驅動程序無法從種子建立副本集信息,即使它是次要的或現有副本集的一部分,是否有任何原因?

此外,您看到單個種子還有哪些其他問題(我可以想象一個種子是單點故障,這意味着如果僅提供的種子不可用,則無法識別主要點,無法建立連接)

+0

Mongodb專家,請回復 –

回答

0

由於在連接字符串中也提供了DB,所以如果它在引導過程中可用,仍然可以從單個種子獲取副本集信息。我找不到有關它無法從單個種子獲取副本集信息的驅動程序文檔。

由於哪個驅動程序無法從種子建立副本集信息,即使它是次要的或現有副本集的一部分,是否有任何原因?

驅動程序按照MongoDB Server Discovery and Monitoring (SDAM) specification故意區分獨立連接和副本集連接。在獨立模式下連接時,驅動程序不會嘗試對副本集配置執行任何拓撲發現或驗證。

如果要針對副本集的特定成員進行連接(例如,爲了進行備份或執行維護),這可能很有用。繞過副本集發現還允許您使用主機名/端口別名連接到副本集成員(例如,如果您通過代理/防火牆轉發連接)。使用副本集連接客戶端預期爲use the hostnames and ports listed in the replica set configuration(不是種子列表),因此客戶端視圖始終遵守副本集故障切換和重新配置。

此外,你有一個單一的種子看看有什麼其他問題(我能想到的一個種子是失敗意味着如果只提供種子不可用,則主無法識別的單點連接不能制定)

由於存在數據冗餘和故障轉移的副本集,因此只有提供單個種子成員會破壞此部署類型的基本目標之一。強烈建議您在種子列表中提供兩個或更多成員以幫助確保您的應用程序可以成功連接。