`
bit1129
  • 浏览: 1068134 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【MongoDB学习笔记十二】Mongo副本集服务器角色之Arbiter

 
阅读更多

 一、复本集为什么要加入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
}

 

分享到:
评论

相关推荐

    K8s 部署 MongoDB(副本集)

    MongoDB中的副本集(Replica Set)是一组维护相同数据集的mongod服务。 副本集可提供冗余和高可用性,是所有生产部署的基础。也可以说,副本集类似于有自动故障恢复功能的主从集群。通俗的讲就是用多台机器进行同一...

    MongoDB 主从复制,副本集分布式存储

    ### MongoDB 主从复制,副本集分布式存储 #### 一、MongoDB 主从复制与副本集的概念 MongoDB 是一种非常流行的非关系型数据库系统,它采用面向文档的数据模型,能够高效地处理大量的非结构化数据。为了提高系统的...

    org.mongodb.spark:mongo-spark-connector_2.11:1.1.0

    mongodb-spark官方连接器,运行spark-submit --packages org.mongodb.spark:mongo-spark-connector_2.11:1.1.0可以自动下载,国内网络不容易下载成功,解压后保存到~/.ivy2目录下即可。

    MongoDB4.2分片及副本集群搭建

    MongoDB4.2分片及副本集群搭建 MongoDB集群 MongoDB分片 MongoDB副本 MongoDB副本集群

    MongoDB搭建副本集教程

    MongoDB 副本集搭建教程 MongoDB 副本集是 MongoDB 中的一种高可用性解决方案,它可以提供高性能、可扩展性和高可用性。通过搭建副本集,用户可以确保数据的安全和高可用性。 一、 MongoDB 副本集环境搭建攻略 1....

    k8s 安装 mongodb 分片(Sharding)+ 副本集(Replica Set)

    k8s 安装 MongoDB 分片(Sharding)+ 副本集(Replica Set) k8s 安装 MongoDB 分片(Sharding)+ 副本集(Replica Set)是结合 Kubernetes(k8s)和 MongoDB 实现高可用性和高性能的解决方案。本解决方案通过使用 ...

    mongodb4.22分片及副本集搭建

    mongodb4.22分片及副本集搭建

    mongodb 副本集php文件样例,php连接mongodb

    mongodb 副本集php文件样例,php连接mongodb

    mongodb副本集搭建

    在开始搭建 MongoDB 副本集之前,需要准备好三个节点的服务器信息,包括服务器地址、集群角色、系统版本、CPU、内存和硬盘等信息。这些信息将用于后续的配置和搭建过程。 二、搭建 MongoDB 副本集 1. 解压 MongoDB...

    MongoDB 安装包 —— 单服务器的副本集(Replication)配置(单服务器:Windows)

    MongoDB 安装包 ,包含了单服务器的副本集(Replication)配置(单服务器:Windows)

    mongodb学习笔记资料

    mongodb学习笔记资料,从安装到操作库collection 对document的crud 索引 replicaSet sharding 备份与恢复

    MongoDB.tgz及MongoVUE可视化工具

    5. **复制集**:为了提高可用性和容错性,MongoDB支持复制集,即多个数据副本之间的同步。 6. **分片**:当数据量过大时,可以使用分片来水平扩展数据库,将数据分布在多个机器上。 7. **GridFS**:MongoDB提供了一...

    mongodb设置副本集

    在生产环境中,为了确保数据的高可用性和容错性,通常会使用副本集(Replica Set)来部署MongoDB。副本集是MongoDB提供的一种数据复制机制,它能够保持多个数据副本的一致性,并在主节点故障时自动切换到备份节点,...

    mongodb分片与副本集详细配置方案

    MongoDB 是一个高性能、分布式、开源的文档型数据库,它支持分片(sharding)和副本集(replica sets)来实现水平扩展和高可用性。分片是将数据分散到多个物理节点上,以处理大数据量和高并发场景;副本集则是为了...

    MongoDB学习笔记

    自己在学习MongoDB的一些笔记,里面有各个查询选择器的使用截图,还有一些索引的介绍。

    MongoDb 可视化工具 MongoVUe

    7. **日志查看**:MongoVue 提供了一个集成的日志查看器,可以显示 MongoDB 服务器的日志输出,帮助诊断和解决问题。 8. **性能监控**:MongoVue 还具备一定的性能监控功能,可以显示数据库的性能指标,如 CPU 使用...

    MongoVUE,MongoDB客户端

    同时,对于初学者来说,MongoVUE是一个很好的学习工具,它以直观的方式展示了MongoDB的基本操作和概念,使得理解和掌握MongoDB变得更加容易。总的来说,MongoVUE是MongoDB开发和运维过程中不可或缺的一款实用工具。

    Mongodb学习笔记.docx

    MongoDB 学习笔记 本文档是 MongoDB 学习笔记,涵盖了 NoSQL、Cache、运行平台等多个方面的知识点。 一、NoSQL 数据库 MongoDB MongoDB 是一个强大、灵活、可扩展性好的文档数据存储器,可以完成大部分关系数据库...

    mongodb4.4.10.tgz(mongo4目前最新稳定版本)

    MongoDB 4.4.10是MongoDB数据库的一个稳定版本,专为那些希望在Linux环境下运行MongoDB的用户设计。MongoDB是一个流行的开源、分布式文档数据库,它以JSON格式存储数据,支持丰富的查询功能,提供了高可用性、水平...

Global site tag (gtag.js) - Google Analytics