189 8069 5689

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"])     =>       irb(main):013:0> rs.primary      => ["xucy.local", 27017]      irb(main):014:0> rs.secondaries      => # # 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驱动提供。因为你需要使用独立连接到你的报表实例,你不能重用投资,将会让你很伤心。

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:MongoDB报表实例--隐藏成员方案-创新互联
标题路径:http://cdxtjz.com/article/dcpjgi.html

其他资讯