我有一個主副本,2個副本和1個仲裁實例的副本集,其中沒有與主副本的連接幾乎相同。爲什麼這個連接在主服務器上是高的,而它應該只有1個,就像我們沒有的應用服務器一樣,它們指向Primary來進行寫操作。請告訴我們。在副本集中,爲什麼主實例與mongodb中的輔助實例具有幾乎相同的連接數?
回答
默認情況下,應用程序將其讀取操作指向副本集中的主要成員 。由於寫入操作發佈到 單個主節點,因此從主節點讀取返回文檔的最新版本 。
但在某些情況下,副本集中的兩個節點可能暫時相信他們是主要的,但最多,其中一人將能夠完成與【W:多數}寫到寫的關注。可以完成{w:majority}寫入的節點是當前的主節點,而另一個節點是之前尚未識別其降級的主節點,通常是由於網絡分區。發生這種情況時,儘管請求了讀取首選項主節點,但連接到以前的主節點的客戶端可能會觀察到過時數據
對於不需要完整最新數據的應用程序,可以通過將部分或全部讀取分發給副本集的次要成員來提高讀取吞吐量或減少延遲。
因此,閱讀首選項描述了MongoDB客戶端如何將讀取操作路由到副本集的成員。
在mongoDB有5個閱讀偏好模式。
primary
默認模式。從當前副本 中讀取的所有操作設置爲主。primaryPreferred
在大多數情況下,操作從主小區讀取 ,但如果不可用,操作將從 中讀取次要成員。secondary
所有操作都從 讀取副本集的次要成員。secondaryPreferred
在大多數 的情況下,操作是從次要成員讀取的,但如果沒有 次要成員可用,則從主要操作讀取操作。nearest
無論成員的類型如何,操作都從具有 網絡延遲的副本集的成員中讀取,而不考慮成員的類型。
如何使用 -
db.collection.find().readPref({ mode: 'nearest', tags: [ {'dc': 'east'} ] })
更多@MongoDB Docs
您也可以撥打一個蒙戈連接對象的setReadPref()方法來控制如何路由客戶端將所有查詢副本集的成員。
EX- db.getMongo().setReadPref('primaryPreferred')
更多@MongoDB Docs
我知道,我們可以將讀取操作設置爲副本集中的次要操作,並且我們在代碼級別執行了操作,但是我想知道爲什麼沒有連接連續增加到Primary,而讀取操作只發生在Secondary中,很少寫操作正在進行中。 –
@MukeshKumar在你的連接中使用setReadPref('primaryPreferred')。如果你想在多個服務器之間隨機地運行查詢,那麼也可以使用haproxy。 mongodb的默認行爲是在我們所做的主要 –
上運行查詢,您建議使用readPref,但我擔心的是高連接數。爲什麼它在不斷增加,並且幾乎與中學時沒有連接相同。 –
- 1. 在mongodb副本集中添加輔助實例時出錯
- 2. mongodb輔助副本無法連接到主集
- 3. Django mongoengine odm在副本集上使用輔助實例
- 4. MongoDB輔助副本沒有集合,因爲在主節點
- 5. 爲什麼我的AWS實例具有與新實例不同的AMI?
- 6. MongoDB主副本集成員同步到輔助節點
- 7. 爲什麼Tomcat webapp在相同的Tomcat實例中啓動幾乎相同的應用程序時失敗?
- 8. 該分區的主要或無狀態實例在輔助副本上具有無效地址
- 9. Mongo java驅動程序:更喜歡輔助mongo實例副本
- 10. 具有相同的實例名稱
- 11. 在SQLiteOpenHelper的不同實例中使用SQLiteDatabase的相同實例
- 12. 無法在Amazon EC2實例上設置MongoDB副本集
- 13. 從控制器的輔助方法實例化實例變量
- 14. Mongodb - 在輔助副本成員中查看集合
- 15. AWS MongoDB EC2實例作爲本地主機與EC2應用程序實例
- 16. 什麼是Oracle中的實例連接和服務連接?
- 17. 爲什麼QML引擎多次實例化相同的腳本?
- 18. 將mongo實例與遠程副本集同步
- 19. Titanium中的集合單例或實例有什麼區別?
- 20. 相同的實例
- 21. libsvm爲所有數據集實例預測相同的值
- 22. 爲什麼在本例中'return'和'yield return'具有相同的行爲?
- 23. 同步MongoDB實例
- 24. 派生類中的實例變量與超類的私有實例變量具有相同的名稱?
- 25. 從單個實例mongodb恢復到空副本集
- 26. PHP:爲什麼兩個類實例共享相同的數據?
- 27. 如何從以前的EC2實例的AMI啓動VPC中的EC2實例的完全相同的副本
- 28. 在c#中,一個類的數組和兩個連接的實例爲什麼?
- 29. 爲什麼這個類在不同的實例中是相同的?
- 30. DB2實例是否與數據庫實例相同?
以及究竟是你的問題?這部分有點不清楚「爲什麼連接的主要高,而它應該只有1我們沒有應用程序服務器,這是指向主要寫操作。」 – Martin
@Martin,我們已設置讀取操作在副本集中的輔助實例,我們在代碼級別做了,但我想知道爲什麼沒有連接連續增加到Primary,而讀取操作只發生在輔助中(連接在輔助中也增加),而且很少有寫操作正在小學進行。 –