一、复本集为什么要加入Arbiter这个角色
回答这个问题,要从复本集的存活条件和Aribter服务器的特性两方面来说。
什么是Artiber?
An arbiter does
not have a copy of data set and
cannot become a primary. Replica sets may have arbiters to add a vote in
elections of for primary. Arbiters allow replica sets to have an uneven number of members, without the overhead of a member that replicates data.
假如复本集是N台服务器,那么至少有N/2+1台服务器能够正常工作才能保证复本集正常工作。j假如复本集是偶数个服务器,比如一主一从,这两台服务器只要有一台服务器挂了,那么整个复本集就不能正常工作了(剩下的一台不满足N/2+1条件)。所以,典型的复本集是一主两从,允许有一台挂了。
实际应用中,应用在资源有限(MongodDB需要运行在高性能服务器上)的情况下,不得不采用一主一从的架构,那么额外配置一台普通的服务器(即Arbiter),一样可以允许主从两台机器挂一台。因为Arbiter可以运行在普通的机器上,是因为,Arbiter没有数据,既不同步复制主服务器的数据,也不给客户端提供读数据能力,它的存在目的是通过参与Leader投票,作为一台凑数的服务器来使用。
需要注意的是,Arbiter服务器只有在主从服务器是偶数个时才能用
二、将Arbiter加入复本集
像普通的mongod服务器一样,使用如下命令启动Arbiter服务器
mongd --port 27021 --dbpath data5 --replSet rs0
然后通过mongo连接到主服务器,执行如下命令,将2721加入到复本集中
rs.addArb("tom-Inspiron-3521:27021");
执行rs.status()得到如下结果:
rs0:PRIMARY> rs.status();
{
"set" : "rs0",
"date" : ISODate("2014-11-19T16:29:53Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "tom-Inspiron-3521:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY", //主服务器
"uptime" : 180,
"optime" : Timestamp(1416414576, 1),
"optimeDate" : ISODate("2014-11-19T16:29:36Z"),
"self" : true
},
{
"_id" : 1,
"name" : "tom-Inspiron-3521:27018",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY", //从服务器
"uptime" : 156,
"optime" : Timestamp(1416414576, 1),
"optimeDate" : ISODate("2014-11-19T16:29:36Z"),
"lastHeartbeat" : ISODate("2014-11-19T16:29:51Z"),
"lastHeartbeatRecv" : ISODate("2014-11-19T16:29:51Z"),
"pingMs" : 0,
"syncingTo" : "tom-Inspiron-3521:27017"
},
{
"_id" : 2,
"name" : "tom-Inspiron-3521:27021",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER", //仲裁服务器
"uptime" : 17,
"lastHeartbeat" : ISODate("2014-11-19T16:29:52Z"),
"lastHeartbeatRecv" : ISODate("2014-11-19T16:29:51Z"),
"pingMs" : 0 //没有syncingTo信息,也就是说,Arbiter不与主服务器做数据同步
}
],
"ok" : 1
}
Arbiter查询
当对Arbiter做查询时,得到的结果是
rs0:ARBITER> db.bar.find();
error: {
"$err" : "not master or secondary; cannot currently read from this replSet member",
"code" : 13436
}
分享到:
相关推荐
mongodb-spark官方连接器,运行spark-submit --packages org.mongodb.spark:mongo-spark-connector_2.11:1.1.0可以自动下载,国内网络不容易下载成功,解压后保存到~/.ivy2目录下即可。
MongoDB4.2分片及副本集群搭建 MongoDB集群 MongoDB分片 MongoDB副本 MongoDB副本集群
MongoDB中的副本集(Replica Set)是一组维护相同数据集的mongod服务。 副本集可提供冗余和高可用性,是所有生产部署的基础。也可以说,副本集类似于有自动故障恢复功能的主从集群。通俗的讲就是用多台机器进行同一...
MongoDB 主从复制,副本集分布式存储(OSX为例 其他的都一样)
k8s 安装 mongodb 分片(Sharding)+ 副本集(Replica Set)
mongodb4.22分片及副本集搭建
mongodb 副本集php文件样例,php连接mongodb
window平台MongoDB搭建副本集教程,适合新手入门
MongoDB 安装包 ,包含了单服务器的副本集(Replication)配置(单服务器:Windows)
mongodb学习笔记资料,从安装到操作库collection 对document的crud 索引 replicaSet sharding 备份与恢复
自己在学习MongoDB的一些笔记,里面有各个查询选择器的使用截图,还有一些索引的介绍。
MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_...
mongodb学习笔记
MongoDB学习笔记思维导图.pdf
Mongodb 学习笔记
MongoDB.tgz及MongoVUE可视化工具,找了好久才找全,MongoDB.tgz实在linux环境下解压,并在/etc/profile中配置环境变量即可使用
mongodb副本集搭建
MongoVUE是一个MongoDB在windwos下的客户端管理工具 MongoVUE是一个创新的MongoDB桌面应用Windows操作系统,给你一个优雅的、高度可用的GUI界面来使用MongoDB。现在有一个更少的担心在管理你的网络数据。 ngoVUE使...
mongodb_consistent_backup, 对MongoDB集群或者副本集执行一致备份的工具 一致性备份工具- mongodb-consistent-backup 使用可选的归档,压缩/复制,加密和上传功能,为MongoDB创建一致的point-in-time备份这个工具的...