mongodb需要配置仲裁节点

记录一下,MongoDB的角色创建及配置,以便以后使用

经过大量血的教训,一个分片配置两个副本集时(一个是primary一个是secondary),如果primary挂掉,secondary是不会升级的,必须要加上一个不存储数据的仲裁节点

config = {"_id" : "tonghao", "members" : [ {"_id" : 0, "host" : "10.2.42.101:27017", priority:2},{"_id" : 1, "host" : "10.2.40.104:27017", priority:1},{"_id" : 2, "host":"10.2.40.104:27016", arbiterOnly:true}]}

priority:2,数字越大级别越高,级别高的作为主节点。

主从复制原理:

假如副本集的数据主从同步不一致,则需要把local db下的文件全复制。
也就是要迁移oplog时间戳

当Mongo DB 被设置成主库时(这一点很重要),在 local db 下有个 collection 叫oplog.$main ,这个就是Mongo 的 oplog。

当Primary节点完成数据操作后,Secondary会做出一系列的动作保证数据的同步:
1:检查自己local库的oplog.rs集合找出最近的时间戳。
2:检查Primary节点local库oplog.rs集合,找出大于此时间戳的记录。
3:将找到的记录插入到自己的oplog.rs集合中,并执行这些操作。

Secondary节点同步到哪了:
1:Primary节点插入一条数据
2:同时,会把该数据写入到Primary的oplog中,并且记录一个时间戳
3:db.runCommand({getlasterror:1,w:2})在Primary节点被调用时,Primary就完成了写入操作,等待其他非仲裁节点来同步数据
4:Secondary节点查询Primary的oplog并且拉去oplog
5:Secondary根据时间戳应用oplog
6:Secondary请求大于本身oplog时间戳的oplog
7:Primary更新时间戳

原文地址:http://blog.51cto.com/zhaoanan/2313711

时间: 2024-10-16 09:58:55

mongodb需要配置仲裁节点的相关文章

Mongodb主、副、仲裁节点集群安装

mongodb 的集群方式主要分为三种Replica Set / Sharding / Master-Slaver ,这里只说明最简单的集群搭建方式(生产环境),如果有多个节点可以此类推或者查看官方文档. Replica Set 中文翻译叫做副本集.其实简单来说就是集群当中包含了多份数据,保证主节点挂掉了,备节点能继续提供数据服务,提供的前提就是数据需要和主节点一致.如下图: Mongodb(M)表示主节点,Mongodb(S)表示备节点,Mongodb(A)表示仲裁节点.主备节点存储数据(M,

MongoDB仲裁节点的理解以及memcached,zookeeper,redis,故障恢复方案思考.

在进行副本集部署时我们会添加一个或多个仲裁节点,仲裁节点不用于备份数据,由于它职责的职责是负责选举主节点,所以对硬件没有太高要求,可以将它部署在单独的服务器上,这个服务器可以是监听服务器,也可以部署在虚拟机上,但是有一点仲裁节点一定不能备份数据.仲裁节点和注解点都可以参与选举,而选举对象是各个非投票成员,也就是需要备份数据的从节点. 图列 这让我想起了以前了解过的zookeeper集群中的选举方案,它和MongoDB有所不同. ZooKeeper采用一种称为Leader election的选举算

MongoDB 基础(八)复制Ⅱ—部署仲裁节点

仲裁者(Arbiter)是复制集中的一个mongodb实例,它并不保存数据.仲裁节点使用最小的资源并且不要求的硬件设备,不能将Arbiter部署在用一个数据集节点中,可以部署在其他应用服务器或者监视服务器中,也可部署在单独的虚拟机中.为了确保复制集中有奇数的投票成员(包括primary),需要添加仲裁节点做为投票,否则primary不能运行时不会自动切换primary. 一个复制集中可设置50个成员,但只有7个投票成员(包括primary),其余为非投票成员(Non-Voting Members

MongoDB添加仲裁节点报错replica set IDs do not match办法

背景:由于历史原因,某个MongoDB副本集只有一主一从双节点,无法满足自动故障转移要求,需要配置一个仲裁节点. 原有节点192.168.10.20:27017,192.168.10.21:27017,现在准备在20上配置一个新节点27018当做仲裁 在当前主节点上执行 repset:PRIMARY> cfg={_id:"repset", members:[{_id:0, host:'192.168.10.20:27017', priority:1},{_id:2, host:'

MongoDB安装配置

一.什么是MongoDB? MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统,属于NoSQL 在高负载的情况下,可以添加更多的节点,来保证服务器性能 MongoDB旨在为WEB应用提供可扩展的高性能数据 存储解决方案,不能完全取代MySQL. MongoDB将数据存储为一个文档,数据结构由键值(Key=>value)对组成.MongoDB文档类似于JSON对象.字段值可以包含其他文档,数组及文档数组. 二.和关系型数据库比较 SQL术语/概念 MongoDB术语/概念

mongodb分片配置

#本次配置时间为 2014-11-06 软件版本为:mongodb-linux-x86_64-2.4.3.tgz linux :centos 5.9 64bit ############################################################## 本次部署分片的方式,只为测试环境:                          # 10.8.10.234    10.8.10.235    10.8.10.236     # shard1 分片    

mongodb3.0.1副本集安装部署(仲裁节点模式)

环境:OS:Centos 7db:3.0.1两台物理机器,启用3个进程,各角色如下192.168.1.118:28007 主192.168.1.85:28008 从192.168.1.85:28009 仲裁节点 1.下载安装介质,我这里下载的是mongodb-linux-x86_64-3.0.1.tgzhttp://dl.mongodb.org/dl/linux/x86_64 -------------------在192.168.1.118上安装---------------------1.安

增加和减少mongodb复制集中的节点

MongoDB Replica Sets不仅提供高可用性的解决方案,同时也提供负载均衡的解决方案,增减 Replica Sets节点在实际应用中非常普通.例如,当应用的读压力暴增时,3台节点的环境已不能满足需求,那么就需要增加一些节点将压力平均分配一下:当应用的压力小时,可以减少一些节点来减少硬件资源的成本,总之这是一个长期且持续的工作. 增加节点步骤 1) 配置并启动新节点,启用 28013 这个端口给新的节点 [[email protected] mongodb]# mkdir -p /da

Mongodb的副本集节点角色介绍及选举过程浅析

一个副本集ReplicaSet一般由一组mongod实例组成,这组mongod实例协调配合工作,共同向外提供高可用的数据库访问服务. 副本集中的不同节点虽然都是mongod实例,但是角色上却有不同,一般分为三种:主节点.副本节点和仲裁者节点. 主节点:负责所有的数据库写操作,默认情况下,主节点也负责处理所有的数据库读操作: 副本节点:负责同步主节点的数据操作日志更新本地数据库,从而保证副本节点的数据和主节点上的数据的一致性:副本节点的从某种意义上来讲有点像赛跑,永远在追赶主节点的数据操作: 仲裁