部署复制组

用户可以通过 sdb shell 或者其他驱动创建管理复制组,添加删除复制组节点,以及查看复制组状态。

创建复制组

推荐创建三个副本的复制组,三个副本提供足够的冗余,足以承受系统故障。副本集推荐奇数个成员,以确保选举的顺利进行。

复制组的节点可以以多种角色运行,其中数据节点包含用户数据,编目节点包含系统数据。编目复制组一般在集群部署时创建完成,本章以创建数据复制组为例。

Note:

创建节点的主机上需要先安装 SequoiaDB 巨杉数据库

  • 连接协调节点
> 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()

创建 / 删除节点

在复制组运行过程中,用户可以添加或者删除节点。

  • 连接数据复制组:group1
> var rg = db.getRG( "group1" )
  • 创建新节点
> var node = rg.createNode( "sdbserver4", 11820, "/opt/sequoiadb/database/data/11820" )
  • 启动节点
> node.start()
  • 删除节点
> rg.removeNode( "sdbserver4", 11820 )

创建节点时,可以指定 weight 参数设置节点选举权重,权重高的节点将会优先成为复制组的主节点。

  • 连接数据复制组:group1
> var rg = db.getRG( "group1" )
  • 创建新节点时设置选举权重
> var node = rg.createNode( "sdbserver4", 11820, "/opt/sequoiadb/database/data/11820", { weight: 20 } )

分离 / 添加节点

当节点出现故障时,如出现磁盘损坏等情况,为避免影响复制组的正常运行,可以先将故障节点分离出复制组。

  • 连接数据复制组: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.getDetail()
{
  "Group": [
    {
      "HostName": "sdbserver1",
      "Status": 1,
      "dbpath": "/opt/sequoiadb/database/data/11820/",
      "Service": [
        {
          "Type": 0,
          "Name": "11820"
        },
        {
          "Type": 1,
          "Name": "11821"
        },
        {
          "Type": 2,
          "Name": "11822"
        }
      ],
      "NodeID": 1000
    },
    {
      "HostName": "sdbserver2",
      "Status": 1,
      "dbpath": "/opt/sequoiadb/database/data/11820/",
      "Service": [
        {
          "Type": 0,
          "Name": "11820"
        },
        {
          "Type": 1,
          "Name": "11821"
        },
        {
          "Type": 2,
          "Name": "11822"
        }
      ],
      "NodeID": 1001
    },
    {
      "HostName": "sdbserver3",
      "Status": 1,
      "dbpath": "/opt/sequoiadb/database/data/11820/",
      "Service": [
        {
          "Type": 0,
          "Name": "11820"
        },
        {
          "Type": 1,
          "Name": "11821"
        },
        {
          "Type": 2,
          "Name": "11822"
        }
      ],
      "NodeID": 1002
    }
  ],
  "GroupID": 1000,
  "GroupName": "group1",
  "PrimaryNode": 1000,
  "Role": 0,
  "SecretID": 1843393377,
  "Status": 1,
  "Version": 7,
  "_id": {
    "$oid": "580043577e70618777a2cf39"
  }
}
收起

建议反馈
本页导航
回到顶部