Mongodb副本集实现及读写分离
{_id:2, 第一步:我们在本机的1111、2222和3333三个端口上启动三个不同的Mongodb实例; mongod --port 1111 --dbpath F:/mongodb1/data/db --logpath F:/mongodb1/data/log/mongodb.log --replSet test --logappend mongod --port 2222 --dbpath F:/mongodb2/data/db --logpath F:/mongodb2/data/log/mongodb.log --replSet test --logappend mongod --port 3333 --dbpath F:/mongodb3/data/db --logpath F:/mongodb3/data/log/mongodb.log --replSet test --logappend 在这里我们启动了三个Mongodb实例, 在1111端口上的Mongodb实例挂掉之后,PRIMARY表示主节点,然后我们使用rs.status()命令来查看下, preference);System. out .println(dbObject);} catch (Exception e) {e.printStackTrace();} } } 读参数除了secondary以外,那么这个副本集能不能解决我们上面主从模式的两个问题呢? 我们首先从第一个问题开始看。
^_^ , 2222);ServerAddress address3 = new ServerAddress(127.0.0.1 ,host:127.0.0.1:3333},并且通过_id字段给副本集起了名字test,3333成为了新的主节点,我们对如何搭建一个主从结构的Mongodb服务器环境进行了简单的介绍,如果想查看副本集的状态,0表示非主节点。
其实在代码层面,host:127.0.0.1:2222}。
如敢兴趣,secondary节点不可用时从主节点读取数据; nearest:不管是主节点、secondary节点,在读操作过程中设置从副本节点读取数据,至于选取的流程在后面的文章中将会讲到, 这样便实现了在副本集上的读写分离了,等等,只有主节点不可用时从secondary节点读取数据,需要说明的是,1表示正常;state表示节点的身份, {_id:1, 3333);addresses.add(address1);addresses.add(address2);addresses.add(address3);MongoClient client = new MongoClient(addresses);DB db = client.getDB( test);DBCollection coll = db.getCollection( test);// 插入BasicDBObject object = new BasicDBObject();object.append( key1,也就解决了文章最上面所说的第二个问题了, 从返回包信息中,members中可以包含多个值,0表示不正常。
使用不同的端口号模拟不同的机器上的Mongodb实例)。
我们需要实现以下两步: (1)在副本节点上设置setSlaveOk; (2)代码层面,无法确保业务访问的不间断性; (2)所有的读写操作都是对主节点的。
那就是主节点负责所有的读写操作造成主节点压力较大,1表示主节点;stateStr用于对节点身份进行字符描述,这里列举的就是刚才启动的三个Mongodb实例,health表示副本集中该节点是否正常,并指定了相应的数据目录和日志目录,在这篇文章中简单描述一下副本集是如何实现的,这里简单讲一点。
主从数据如何同步?如何选举产生新的主节点?副本集中的各个节点如何信息同步?这些问题,可能是因为主从模式存在以下两个缺点: (1)主节点不可用之后。
value1 );ReadPreference preference = ReadPreference.secondary();DBObject dbObject = coll.findOne(object,那就是使用副本集ReplicaSets,可以使用rs.status()命令来进行查看。
SECONDARY表示副节点;name是副本集节点的ip和端口信息,还有其他几个参数可以使用,其他节点可以发起选举行为, rs.initiate(config_test); 这里使用上面的配置初始化Mongodb副本集。
这里需要使用--replSet说明该Mongodb实例是副本集中的节点,但是对于主从结构,当主节点挂掉之后, 1111);ServerAddress address2 = new ServerAddress(127.0.0.1 , null 。
上面不能做到在副本集中读写压力分散,Mongodb为我们提供了另外一种推荐的使用方法,需要对返回信息中的个别字段进行简单说明,可以实现自动切换,将三个不同的Mongodb实例结合在一起形成一个完整的副本集; config_test={_id:test,只要在选举过程中某个节点得到副本集节点数一半以上的选票并且没有节点投反对票,造成主节点的访问压力较大; 因此。
那么该节点就可以成为主节点,将另起一篇文章进行描述。
我们在Java中访问副本集是这样的,这里采用在一台机器上, 首先我们先来搭建一个副本集(因为没有那么多服务器机器,从网络延迟最低的节点上读取数据,我们可以设置再访问副本集的时候只从副节点上读取数据,members:[ {_id:0,又是如何解决以上两个问题的, 在前面的文章Mongodb的主从模式搭建实例中,因此解决了第一个问题, 第二步:登录到一个实例上,Mongodb官方并不推荐我们使用了,谢谢, ]}; 这里。
在副本集节点的状态中该节点是不可达的, secondary:只从secondary节点上进行读取操作, 第三步:通过执行下面的命令初始化副本集, 3333);addresses.add(address1);addresses.add(address2);addresses.add(address3);MongoClient client = new MongoClient(addresses);DB db = client.getDB( test);DBCollection coll = db.getCollection( test);BasicDBObject object = new BasicDBObject();object.append( key1,编写指令,无法自动切换到从节点,只从主节点上进行读取操作; primaryPreferred:大部分从主节点上读取数据,如下所示: public class TestMongoDBReplSet { public static void main(String[] args) {try {ListServerAddress addresses = new ArrayListServerAddress();ServerAddress address1 = new ServerAddress(127.0.0.1 , secondaryPreferred:优先从secondary节点进行读取操作,可以看到关闭1111端口后,那么在副本集中如何解决这个问题了呢?正常情况下, 至于第二个问题,host:127.0.0.1:1111}, 通过上面的三步,重新选取产生的主节点是3333端口上启动的Mongodb实例,如下所示: public class TestMongoDBReplSet { public static void main(String[] args) {try {ListServerAddress addresses = new ArrayListServerAddress();ServerAddress address1 = new ServerAddress(127.0.0.1 , 1111);ServerAddress address2 = new ServerAddress(127.0.0.1 ,而该副本集的名称是test, value1 );coll.insert(object);DBCursor dbCursor = coll.find();while (dbCursor.hasNext()) {DBObject dbObject = dbCursor.next();System. out.println(dbObject.toString());} } catch (Exception e) {e.printStackTrace();} } } 但是, 副本集现在搭建起来了, 2222);ServerAddress address3 = new ServerAddress(127.0.0.1 ,我们将1111端口的Mongodb服务器给关闭,副本集读写分离结构如下图所示: 为了在副本集上实现读写分离,如下所示: 在这里,他们的含义分别如下所示: primary:默认参数,可以关注我的博客,至于副本集中另一个比较重要的地方,存在的问题是secondary节点的数据会比primary节点数据旧,便可以简单的搭建起一个由三个Mongodb实例构成的名称为test的副本集了,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/sql/nosql/11633.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
3NF(无依赖):主键字段
时间:2021-01-22
-
进修Redis你必需相识的数据
时间:2021-01-22
-
领略OVER子句
时间:2021-01-22
-
MongoDB的查询操纵
时间:2021-01-22
-
动态加载就动态加载了吧
时间:2021-01-22
-
数据库理相关常识
时间:2021-01-14
-
存储进程实现可扩展机动
时间:2021-01-14
-
通过计算出的hashkey
时间:2021-01-14
热门文章
-
SpringMvc+Mybatis+Redis框架
时间:2020-12-27
-
CentOS6.5_X64下安装配置MongoDB数据库
时间:2021-01-07
-
Redis学习笔记一
时间:2021-01-06
-
大数据架构的典型方法和方式
时间:2021-01-07
-
存储过程实现可扩展灵活接口
时间:2020-12-27
-
两大数据库缓存系统实现对比
时间:2020-12-27
-
MongoDB 搭建副本集
时间:2021-01-03
-
玩转mongodb(七):索引,速度的引领(全
时间:2021-01-06
-
如何使用DB查询分析器高效地生成旬报货
时间:2021-01-06
-
c#之Redis队列在邮件提醒中的应用
时间:2021-01-03
