标签:
副本集是主从复制的一种,是一种自带故障转移功能的主从复制。攻克了上述主从复制的缺点。实现主server发生问题后。不需人为介入。系统自己主动从新选举一个新的主server的功能。
该图是copy别人的,有兴趣的能够查看该人的博客,写的很的棒
<strong> </strong> //启动server(登录每台server) mongod --dbpath d:/data/ --replSet repset //初始化副本集(登录随意一台server) config = { _id:"repset", members:[ //_id值 == replSet參数 {_id:0, host:"192.168.1.136:27017"}, {_id:1, host:"192.168.1.137:27017", priority:10}, {_id:2, host:"192.168.1.138:27017", priority:20}, //仲裁节点:仅用于投票。防止选不出主节点,仲裁和非仲裁(仅能在初始化设置) {_id:3, host:"192.168.1.139:27017", arbiterOnly:true}] } rs.initiate(config);副本集的配置也是非常的简单,如上面的配置就能够实现。在副本集中涉及到非常多不同类型的节点。大家能够看对应的凝视。有不明的能够再查一下。以下是一些关于副本集的其他方面的操作。大家能够尝试一下
节点操作 rs.status(); //查看集群节点状态(登录随意一台server) rs.add("192.168.1.140:27017"); //加入副本节点 rs.remove("192.168.1.140:27017"); //删除节点 节点属性操作(登录主节点server) cfg=rs.conf(); //隐藏节点:可投票,可备份数据,不可被client使用(不作主节点) cfg.members[1].priority=0; cfg.members[1].hidden=1; //延迟复制节点:用于备份,延迟从主节点同步数据,避免用户错误 cfg.members[2].priority=0; cfg.members[2].slaveDelay=3600; //永副本节点:防止性能不高的节点成为主节点 cfg.members[3].priority=0; //纯备份副本节点:无投票 cfg.members[4].votes=0; rs.reconfig(cfg); 读写分离 //设置副本节点可读(副本节点server) db.getMongo().setSlaveOk();配置好副本集后,我们是无法读取副本节点server的内容,须要我们进行例如以下设置。才干够实现读写分离,当然,上篇的主从server不须要进行这个设置就能够实现主从复制
读写分离 //设置副本节点可读(副本节点server) db.getMongo().setSlaveOk();<strong> </strong>
<span style="font-size:18px;"> //分布式集群(配置多个服务器。仅仅要有一个可执行即可) List<ServerAddress> serverAddressList = new ArrayList<ServerAddress>(); serverAddressList.add(new ServerAddress("192.168.24.1", 10000)); serverAddressList.add(new ServerAddress("192.168.24.2", 10000)); MongoClient mongoClient = new MongoClient(serverAddressList); </span>
<span style="font-size:18px;"> //设置读写分离 ReadPreference readPreference = ReadPreference.secondaryPreferred(); database.setReadPreference(readPreference); primary:默认參数。仅仅从主节点上进行读取操作 primaryPreferred:大部分从主节点上读取数据,仅仅有主节点不可用时从secondary节点读取数据 secondary:仅仅从secondary节点上进行读取操作,存在的问题是secondary节点的数据会比primary节点数据“旧” secondaryPreferred:优先从secondary节点进行读取操作。secondary节点不可用时从主节点读取数据 nearest:无论是主节点、secondary节点,从网络延迟最低的节点上读取数据。 </span>上面的代码不是完整的代码,是一些比較核心的代码,假设大家想要实现这个,能够先从单个server读写操作的写起。以下给出一个但server的简单的javaclient的实现样例,大家有兴趣的能够下载下来看一下。实例代码。该实例代码实现了对mongodb的固定集合和文件的操作。
读写分离:主节点数据读写,默认副本节点无法直接读写(可设置仅仅读)
数据备份:副本节点读取主节点的oplog(操作日志),运行
故障转移:主节点宕机。系统会自己主动重选主节点(优先级0—100越大,备选机会越大)
仅仅有集群,没有分布式
说明
副本集节点数
最好为奇数:避免选举不了主节点
最多12个:复制成本高
最多7个參与选举:添加选举时间
标签:
原文地址:http://www.cnblogs.com/lcchuguo/p/5372378.html