2016-04-01 24 views
2

我在基於rails的應用程序上有一個ruby。目標是從蒙戈副本集成員即讀:如何強制腳踏車從延遲運行的Mongo輔助副本集成員讀取

  1. secondary
  2. delayed by x seconds
  3. priority: 0
  4. 放置在一個單獨的數據中心。

DETAILS:我有一個使用mongo副本集的正在運行的生產羣集。

以前,人們注意到,有時候輕便摩托車會以高延遲讀取其他數據中心(遠程存在於其他數據中心)的輔助數據,而不是從輔助期望讀取。爲了解決同樣的問題,我們在遠程輔助服務器上添加了一個延遲。

現在我有一個新的分析應用程序,它使用了mongoid。有沒有一種方法可以強制使用mongoid或任何其他寶石從特定的輔助讀取? 即有沒有辦法來覆蓋Mongoid/Moped/MongoDB中的自動發現功能? 請建議

+1

我也遇到過類似的問題。我們在mongo replicaset中有一個生產集羣。我們還有一個DR羣集鏈接到同一個複製數據集。 DR的成員之一是延遲成員,但其他成員是同步的。在生產羣集中,我們使用Ruby/Mongo id config。這裏我們特別提到了mongoid.yml中的主機名。但過了一段時間,我們注意到Moped正在向mongoid.yml中沒有提到的輔助發送查詢。我們介紹了中學的延遲情況以闡明問題。 Mongoid版本4.x –

回答

1

您可以使用tag_sets。

# Change the default read preference. Valid options for mode are: :secondary, 
# :secondary_preferred, :primary, :primary_preferred, :nearest 
# (default: primary) 
    read: 
     mode: :secondary_preferred 
     tag_sets: 
      - use: web 

配置的方式在副本tag_sets設置is documented here: 在Mongoid config documentation你可以看到,根據「讀」的設置,您可以指定分配給要輔助節點tag_set明確讀取

我希望這可以幫助你。這是一個非常先進和強大的功能,不是每個人都知道如何使用。