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

   在进行副本集部署时我们会添加一个或多个仲裁节点,仲裁节点不用于备份数据,由于它职责的职责是负责选举主节点,所以对硬件没有太高要求,可以将它部署在单独的服务器上,这个服务器可以是监听服务器,也可以部署在虚拟机上,但是有一点仲裁节点一定不能备份数据.仲裁节点和注解点都可以参与选举,而选举对象是各个非投票成员,也就是需要备份数据的从节点.

    图列

  这让我想起了以前了解过的zookeeper集群中的选举方案,它和MongoDB有所不同.

  ZooKeeper采用一种称为Leader election的选举算法。在整个集群运行过程中,只有一个Leader,其他的都是Follower,如果ZooKeeper集群在运行过程中Leader出了问题,系统会采用该算法重新选出一个Leader。因此,各个结点之间要能够保证互相连接,必须配置上述映射。

ZooKeeper集群启动的时候,会首先选出一个Leader,在Leader election过程中,某一个满足选举算的结点就能成为Leader。

  而对于memcached不提供分布式方案,我们可以利用代理服务器来实现分布式部署.而Magent就是一个memcached代理服务器,但是它不存在什么leader,secondary,所有的命令入口都是magent这个代理服务器,当某个节点出现done机时,而请求数据找不到,它会从备份节点上获取.当让我们可用通过zookeeper来管理memcached分布式集群.

  而对于redis  当设置好slave服务器后,slave会建立和master的连接,然后发送sync命令。无论是第一次同步建立的连接还是连接断开后的重新连 接,master都会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存起来。后台进程完成写文件 后,master就发送文件给slave,slave将文件保存到磁盘上,然后加载到内存恢复数据库快照到slave上。接着master就会把缓存的命 令转发给slave。而且后续master收到的写命令都会通过开始建立的连接发送给slave。从master到slave的同步数据的命令和从 client发送的命令使用相同的协议格式。当master和slave的连接断开时slave可以自动重新建立连接。如果master同时收到多个 slave发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave。对于master出现故障时,我们可以通过持久化数据来恢复,而对于salve出现故障那么它会和master重新连接然后将所有的内从快照写入slave.可见这样恢复一定是很慢的.

时间: 2024-08-24 10:11:43

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

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

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

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

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

mongodb需要配置仲裁节点

记录一下,MongoDB的角色创建及配置,以便以后使用 经过大量血的教训,一个分片配置两个副本集时(一个是primary一个是secondary),如果primary挂掉,secondary是不会升级的,必须要加上一个不存储数据的仲裁节点 config = {"_id" : "tonghao", "members" : [ {"_id" : 0, "host" : "10.2.42.101:270

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:'

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.安

Memcached、Redis OR Tair

一.前言 非关系型数据库(NoSQL = Not Only SQL)的产品非常多,常见的有Memcached.Redis.MongoDB等优秀开源项目,相关概念和资料网上也非常丰富,不再重复描述,本文主要引入Memcached和Redis与淘宝开源Tair分布式存储进行对比测试,由于各自适用场景不同,且每个产品的可配置参数繁多,涉及缓存策略.分布算法.序列化方式.数据压缩技术.通信方式.并发.超时等诸多方面因素,都会对测试结果产生影响,单纯的性能对比存在非常多的局限性和不合理性,所以不能作为任何

谈谈Memcached与Redis

1. Memcached简介 Memcached是以LiveJurnal旗下Danga Interactive公司的Bard Fitzpatric为首开发的高性能分布式内存缓存服务器.其本质上就是一个内存key-value数据库,但是不支持数据的持久化,服务器关闭之后数据全部丢失.Memcached使用C语言开发,在大多数像Linux.BSD和Solaris等POSIX系统上,只要安装了libevent即可使用.在Windows下,它也有一个可用的非官方版本(http://code.jellyc

key/value存储系统-Memcached、Redis、Tair

每个产品的可配置参数繁多,涉及缓存策略.分布算法.序列化方式.数据压缩技术.通信方式.并发.超时等诸多方面因素,都会对测试结果产生影响,单纯的性能对比存在非常多的局限性和不合理性,所以不能作为任何评估依据,仅供参考. 1.尽管 Memcached 和 Redis 都标识为Distribute,但从Server端本身而言它们并不提供分布式的解决方案,需要Client端实现一定的分布算法将数据存储到各个节点,从而实现分布式存储,两者都提供了Replication功能(Master-Slave)保障可

memcached的最佳实践方案(转)

基本问题 1.memcached的基本设置 1)启动Memcache的服务器端 # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid -d选项是启动一个守护进程, -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB, -u是运行Memcache的用户,我这里是root, -l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服