用户可以通过 SDB Shell 或者其他驱动创建管理复制组,添加删除复制组节点,以及查看复制组状态。
推荐创建三个副本的复制组,三个副本提供足够的冗余,足以承受系统故障。副本集推荐奇数个成员,以确保选举的顺利进行。
复制组的节点可以以多种角色运行,其中数据节点包含用户数据,编目节点包含系统数据。编目复制组一般在集群部署时创建完成,本章以创建数据复制组为例。
Note:
创建节点的主机上需要先完成集群部署。
连接协调节点
> var db = new Sdb( 'sdbserver1', 11810 )
创建数据复制组:group1
> var rg = db.createRG( "group1" )
创建三个复制组节点
> rg.createNode( "sdbserver1", 11820, "/opt/sequoiadb/database/data/11820" ) > rg.createNode( "sdbserver2", 11820, "/opt/sequoiadb/database/data/11820" ) > rg.createNode( "sdbserver3", 11820, "/opt/sequoiadb/database/data/11820" )
启动复制组
> rg.start()
在复制组运行过程中,用户可以创建或者删除节点。创建节点时,可以指定 weight 参数设置节点选举权重,权重高的节点将会优先成为复制组的主节点。
创建节点
连接数据复制组:group1
> var rg = db.getRG( "group1" )
创建新节点,并设置选举权重
> var node = rg.createNode( "sdbserver4", 11820, "/opt/sequoiadb/database/data/11820", { weight: 20 } )
启动该节点
> node.start()
删除节点
连接数据复制组:group1
> var rg = db.getRG( "group1" )
删除节点
> rg.removeNode( "sdbserver4", 11820 )
当节点出现故障时,如出现磁盘损坏等情况,为避免影响复制组的正常运行,可以先将故障节点分离出复制组。待节点恢复后,可将该节点重新添加回复制组。
分离节点
连接数据复制组:group1
> var rg = db.getRG( "group1" )
从复制组中分离 sdbserver3:11820
节点
> rg.detachNode( "sdbserver3", 11820 )
重新添加节点
连接数据复制组:group1
> var rg = db.getRG( "group1" )
把 sdbserver3:11820 节点加入到复制组
> rg.attachNode( "sdbserver3", 11820 )
连接数据复制组:group1
> var rg = db.getRG( "group1" )
查看该复制组主节点
> rg.getMaster()
输出结果如下:
sdbserver1:11820
查看该复制组信息
> rg.getDetailObj()
Note:
getDetailObj() 返回字段的说明可参考复制组列表。