您的位置:首页 > 数据库 > Mongodb

mongoDB——wiredTiger副本集模型的成员角色

2016-04-01 10:16 441 查看
mongoDB的理解,现阶段在串联调查的知识点,以后开始解析代码,从逻辑层面来再次确认理解不正确或者认识不足的地方。

Replica-set

之前接触过的NoSQL数据库,比如:hbase,hive来说,为了数据的安全性和可扩展性考虑,都是是用master-slave的模型,master节点永远承担这read&write,slave就是冷备份,只有当master发生宕机的情况下,众多的slave中才会升格一个作为master,避免整个集群失效。

WiredTiger

而mongoDB的,WiredTiger存储引擎下,是去中心化的,没有所谓的master-slave,官方称为primary-secondary。

在一个副本集中,有且只有一个primary,且拥有read&write权限。
一个正常的secondary成员存储着primary所有数据的copy,secondary成员具有投票权和被选举权(根据设定而定)

而在一个副本集中,secondary成员还有以下2种分类:

拥有被选举(Priority:1)

即可以被选举成为primary,具有write权限。

没有被选举(Priority:0)

这种成员角色维护着primary的数据copy,但在故障切换中,永远不会成为primary。这类成员具有以下特性:

作为冷备份
可副本集中,确保可以选举出合适的primary

在replica-set的多个数据中心,通过网络分区,确保中心数据在故障切换中,可快速选举primary

这类成员又细分为以下4类:

Hidden members

这类成员也像其他成员一样,维持着primary数据的copy,不能成为primary,可参与投票,但没有相应read的权限,只是专注于报告需求或者备份。

Delayed members

利用primary的oplog复制数据。好处是当发生人为错误,比如误删数据库的情况下,可以根据oplog进行恢复

Arbiters

这类成员不对primary的数据进行copy,所以永远不会成为primary,唯一的用途就是在副本集中发生无法决策出primary时,快速选举出最适合做primary的节点

Non-voting members

拥有primary数据的copy,可以接受来自客户端的read操作,也可以成为primary,但在选举中不具有投票权。

成为primary的先决条件是:在可投票的X个成员中,某个成员获得选票大于等于【(x/2)+1】.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: