溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MongoDB報表實例 -- 隱藏成員方案

發布時間:2020-03-11 22:16:11 來源:網絡 閱讀:3307 作者:UltraSQL 欄目:MongoDB數據庫

一個復制集的隱藏成員被配置為priority: 0,為了阻止它們被選舉為主,設置hidden: true,阻止客戶端連接到復制集路由讀操作到它,即使他們指定了一個讀偏好為secondary。


從一個隱藏成員讀,你會看到一個獨立的連接,而不是MongoReplicaSetClient類型,并指定slave_ok。


隱藏成員設置


你可以使用mongo shell來隱藏一個存在復制集的成員:

$ mongo admin -uxucy -p   
PRIMARY> conf = rs.config()    
 { "_id" : "test", "version" : 21, "members" : [ { "_id" : 0, "host" : "xucy.local:27017", }, { "_id" : 1, "host" : "xucy.local:28017", }, { "_id" : 2, "host" : "xucy.local:29017", } ] }    
PRIMARY> conf.members[1].priority = 0     
PRIMARY> conf.members[1].hidden = true     
PRIMARY> conf.version += 1     
PRIMARY> rs.reconfig(conf)


xucy.local:28017現在隱藏。他將繼續復制和像往常一樣在選舉中投票,但是連接到復制集的客戶端將不會從它讀取,即使xucy.local:29017下線:

irb(main):012:0> rs = Mongo::MongoReplicaSetClient.new(["xucy.local:27017", "xucy.local:28017", "xucy.local:29017"])    
=> <Mongo::MongoReplicaSetClient:0x3fe06e4fe564 @seeds=[["xucy.local", 27017], ["xucy.local", 28017], ["xucy.local", 29017]] @connected=true>     
irb(main):013:0> rs.primary     
=> ["xucy.local", 27017]     
irb(main):014:0> rs.secondaries     
=> #<Set: {}> # an empty set -- as far as this connection is concerned, there are no secondaries.


報表代碼將會像這樣(使用Ruby):

require 'mongo'    
reporting = Mongo::MongoClient.new("xucy.local", "28017", slave_ok: true) # error checking goes here     
reporting['my_application']['users'].aggregate(...)


考慮


使用隱藏的成員是一個最簡單的方式去配置實例用于專屬的工作負載像報表,然而:


隱藏成員不能在緊急情況下讀取


帶有2個普通和1個隱藏成員在一個復制集中,對于寫的錯誤容忍等價于一個常規的3個成員的集合。然而,你失去兩個節點,你的生產應用將不能優雅的降級到只讀模式,因為你的隱藏成員將不允許復制集客戶端讀取。如果你只是喜歡一個隱藏成員的簡單,并且花費不是問題,使用一個5成員(帶有一個成員隱藏)的集合代替。


對于復制集的包裝代碼不能被使用


很多團隊創建應用定制的包裝代碼添加基礎知識給客戶端,由MongoDB驅動提供。因為你需要使用獨立連接到你的報表實例,你不能重用投資,將會讓你很傷心。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女