1
我有3個在AWS,1個主節點和2個輔助節點上運行的mongo實例。我們希望所有讀查詢去輔助節點,因此創建貓鼬連接,當我們使用這些配置選項:readPreference secondaryPreferred不僅從Secondary節點讀取
options = {
db: {
readPreference: 'secondaryPreferred',
native_parser: true
},
replset: {
strategy: 'ping',
auto_reconnect: false,
}
};
mongoose.connect(databaseUrl, options);
問題:通過這些設置,讀取查詢到兩個主要和次節點,而2個輔助節點正在運行。
當我們使用readPreference: 'secondary'
時,它的工作方式與我們預期的一樣:所有讀取查詢都只發送給輔助節點。
請幫我解釋這是因爲與蒙戈文檔提到:
secondaryPreferred:在大多數情況下,操作從二級會員閱讀,但如果沒有次要部件可用,操作從主讀取。
順便說一句,我看到一些相同的問題,但他們都還沒有一個明確的解決方案。 :(
我們使用:
- 貓鼬:v4.9.5
- 蒙戈服務器:V3.2
- 節點:v5.12.0
除非您真正瞭解這意味着什麼和所有含義,否則您應該只是從「主要」中讀取。如果你必須提出這個問題,那麼你應該堅持閱讀小學。似乎是偏好設置按設計工作。 –
我需要配置從'secondary'讀取,因爲'write'操作符的'primary'當前滿載。如果這些設置按照設計工作,那麼爲什麼它會從'primary'和'secondary'中讀取。 – HuyTran
這並不足以單獨做到這一點。如果你的主要負載很重,那麼「分片」是你應該看的第一個地方。次要讀數「按設計」意味着數據不能保證是最新的。只有當你接受,作爲一個給定的事實,你的應用程序可以忍受,這真的是一個有效的選擇。次要讀取不用於擴展,就像複製不會替代備份一樣。 –