多副本机制
我们都知道,巨杉数据库的多副本机制是通过复制组来实现的,今天带大家了解一下复制组的相关概念以及操作。
【节点类型】
在巨杉数据库中,常用的节点类型分为三种:编目节点,协调节点和数据节点。
通过之前的学习,我们都知道了这三种的节点的职责。
编目节点:存放用户信息,用户集合信息等数据库元信息。
协调节点:用于连接数据库。
数据节点:存放用户数据。
【复制组】
巨杉数据库中,通过复制组实现多副本机制。一个复制组中可以包含多个节点(最多7个),同样,复制组也分为三种类型:
编目节点组,协调节点组,数据节点组。顾名思义,复制组是由相同类型的一组节点构成的。其中,数据节点组中的节点数可以理解为灾备的副本数。
每个复制组中的节点,理论上数据是一致的。一个数据组中,在某个时间节点之间的数据可能不一致,但是是最终一致的。这样做可以提升数据的可靠性和实现数据的读写分离。
在巨杉数据库中可以通过参数来控制数据的一致性(最终一致和强一致)。
【数据同步】
在巨杉数据库的复制组中,节点可以分为主节点和备节点。在主节点可以进行读写操作,备节点只进行读操作。主备节点之间会定时进行数据同步。
主从数据同步是通过事务日志(同步日志)实现的。备节点会定时的从主节点读取事务日志(同步日志),当主节点发生了数据写操作(增删改),备节点读取事务日志(同步日志)时,就会发现有数据变化,这时备节点就会从主节点中将更新的数据写入到自己的存储中。(当然,数据同步不仅仅会在主从节点之间发生,只要一个备节点的数据是最新的,其他备节点也可以从该备节点中进行数据同步)
【复制组操作】
巨杉数据库中,可以对集群进行扩缩容操作。同样,对于复制组也可以进行灵活的扩缩容操作。这里介绍一下复制组的扩缩容操作。
创建复制组
db.createRG("groupName")
启动数据组
db.getRG("groupName").start()
在复制组中新增节点。
db.getRG("groupName").attachNode("localhost",11900,{KeepData:false})
在复制组中分离已有节点。
db.getRG("groupName").detachNode("localhost",11900,{KeepData:false})
查看复制组信息
db.getRG("groupName").getDetail()
需要注意的是,一个复制组中最多有7个节点。同样,复制组的节点应该分布在不同的服务器上。一般情况下,我们建议采用三副本的模式部署集群。
欢迎大家下载使用:
http://download.sequoiadb.com/cn/
辅助阅读:巨杉Tech | 分布式数据库负载管理WLM实践