zoukankan      html  css  js  c++  java
  • mongodb配置副本集(多台服务器间的副本集搭建) replica[ˈrɛplɪkə]

     副本集具有多个副本保证了容错性,就算一个副本挂掉了还有很多副本存在,并且解决了“主节点挂掉了,整个集群内会自动切换”的问题。我们来看看mongoDB副本集的架构图:

    由图可以看到客户端连接到整个副本集,不关心具体哪一台机器是否挂掉。主服务器负责整个副本集的读写,副本集定期同步数据备份,一但主节点挂掉,副本节点就会选举一个新的主服务器,这一切对于应用服务器不需要关心。我们看一下主服务器挂掉后的架构:

    副本集中的副本节点在主节点挂掉后通过心跳机制检测到后,就会在集群内发起主节点的选举机制,自动选举一位新的主服务器。看起来很牛X的样子,我们赶紧操作部署一下!
    官方推荐的副本集机器数量为至少3个,那我们也按照这个数量配置测试。
    配置三台机器  ip地址 237.130和237.131 237.132
    1、分别在每台机器上启动mongodb
    每台机器都启动副本集  命令 mongod --replSet spock -f conf/mongd.conf  
    关闭防火墙 service iptables stop
    2、初始化副本集
    启动成功以后 连接任意一台机器 启动mongo shell 
    config = { _id:"spock", members:[ {_id:0,host:"192.168.237.130:12345"}, {_id:1,host:"192.168.237.131:12345"}, {_id:2,host:"192.168.237.132:12345"}] }
    db = (new Mongo("192.168.237.131:12345")).getDB("test")
    rs.initiate(config)
    结果如图所示:
     
     
    整个副本集已经搭建成功了。
    可以看到 131的机器是 主节点 其他都是备份节点,
    3、测试副本集数据复制功能
    连接主节点:131的mongo
    想test集合插入 文档
    连接其他任意一台备份节点的机器
    发现查看数据报错了  原因:备份节点会落后于主节点,可能没有最新写入的数据 所以备份节点默认情况下会拒绝读取请求,以防止应用程序意外拿到过期的数据,因此,如果在备份节点上做查询,会得到上述错误 意思是当前节点不是主节点
    为了保护应用程序 以免意外连接到备份节点 读取到过期的数据.如果希望从备份节点读取数据 需要设置从备份节点读取数据没有问题的标识 如下图
    注意:slaveOk是对连接的设置的不是数据库设置的,可以看到 我们在主节点插入的数据在 备份节点已经能查到了.
    4 测试副本集故障转移功能
    先停掉主节点mongodb 131,连接任意其余的机器 执行如下命令: db.shutdownServer()
    可以看到 主节点已经 自动换成了130
     
    关闭 副本集  replicaSet.stopSet()
  • 相关阅读:
    网站常见的反爬虫和应对方法 + [评论]
    斯坦福大学自然语言处理第一课——引言(Introduction)
    爬虫入门实战,知乎小爬虫
    使用情感分析技术做营销
    字符串匹配的KMP算法
    向Array中添加希尔排序
    向Array中添加二分插入排序
    向Array中添加插入排序
    开辟我的前端之旅!
    【apache】yum 安装Apache(Centos 6.5)
  • 原文地址:https://www.cnblogs.com/ten951/p/6072740.html
Copyright © 2011-2022 走看看