文档

关于 SequoiaDB

快速入门

快速入门之一键清理

安装

基本操作

数据模型

SQL引擎

FileSystem引擎

S3引擎

系统架构

数据库管理

连接器

驱动

参考手册

SequoiaDB Shell方法

概述

Global

Sdb

SecureSdb

SdbCS

SdbCollection

SdbCursor

SdbQuery

SdbReplicaGroup

SdbNode

SdbDomain

Oma

File

FileContent

Cmd

Remote

Hash

IniFile

Sdbtool

Ssh

System

辅助类型对象

特殊类型对象

操作符

SQL语法

SQL to SequoiaDB 映射表

限制

错误码

故障排除

SAC 管控中心

Web服务

版本信息

attachNode()

语法

rg.attachNode( <host>, <service>, <options> )

将一个已经创建完成但不属于任何分区组的节点加入到当前分区组。可以搭配 rg.detachNode() 使用。目前可以支持加入到数据组或者编目组。

参数描述

参数名 参数类型 描述 是否必填
host string 节点的主机名或者主机 IP。
service string 节点服务名或者端口。
options Json 对象 详见options选项说明。

options选项

参数名 参数类型 描述 默认值
KeepData bool 是否保留新加节点原有的数据。 无默认值,需用户显式指定。

Note:

  1. 参数 options 中的 KeepData 字段为必填项,需用户显式指定。由于该选项会决定新节点数据是否继续被保留,用户应该谨慎考虑。
  2. 如果新加的节点原本不属于当前组,建议用户将 KeepData 设置为 false。否则,一旦发生主备切换及全量同步,当前组原有节点的数据将有可能被新加节点的数据覆盖。
  3. 节点配置文件中角色(role)指定为编目(catalog)的节点只能加入编目组中;角色指定为数据(data)的节点只能加入到数据组中。

返回值

无返回值,出错抛异常,并输出错误信息。可以通过 getLastErrMsg 获取错误信息,或通过 getLastError 获取错误码。 关于错误处理可以参考 常见错误处理指南

错误

错误信息记录在节点诊断日志(diaglog)中,可参考错误码

错误码 可能的原因 解决方法
-15 网络错误 1. 检查 sdbcm 状态是否正常,如果状态异常,可以尝试重启;
2. 检查填写的 host 是否正确。
-146 节点不存在 检查节点是否存在。
-157 节点已存在于其他复制组 检查节点是否已加入到当前或其他复制组,如果已属于任何复制组将不支持该操作。注意:编目节点不能加入到数据组中,数据节点也不能加入到编目组中。

示例

将一个节点从 group1 中分离,加入到 group2 中,方法如下:

attachNode 前的节点信息:

> db.listReplicaGroups()
{
  "Group": [
    {
      "HostName": "hostname1",
      "Status": 1,
      "dbpath": "/opt/sequoiadb/database/data/11830/",
      "Service": [
        {
          "Type": 0,
          "Name": "11830"
        },
        {
          "Type": 1,
          "Name": "11831"
        },
        {
          "Type": 2,
          "Name": "11832"
        }
      ],
      "NodeID": 1007
    }
    ......
  ],
  "GroupID": 1002,
  "GroupName": "group1",
  "PrimaryNode": 1002,
  "Role": 0,
  "Status": 1,
  "Version": 7,
  "_id": {
    "$oid": "580adfd531ae32109e38ca29"
  }
}
......
{
  "Group": [
    {
      "HostName": "hostname2",
      "Status": 1,
      "dbpath": "/opt/sequoiadb/database/data/11840/",
      "Service": [
        {
          "Type": 0,
          "Name": "11840"
        },
        {
          "Type": 1,
          "Name": "11841"
        },
        {
          "Type": 2,
          "Name": "11842"
        }
      ],
      "NodeID": 1000
    }
    ......
  ],
  "GroupID": 1000,
  "GroupName": "group2",
  "PrimaryNode": 1000,
  "Role": 0,
  "Status": 1,
  "Version": 7,
  "_id": {
    "$oid": "580adfd531ae32109e38ca27"
  }
}

将“hostname1:11830” 节点从 group1 分区组中分离:

> db.getRG('group1').detachNode('hostname1', '11830', { KeepData: true } )

将“hostname1:11830” 节点加入到 group2 分区组中,由于节点原本不属于 group2, 此处将其原本的数据清空:

> db.getRG('group2').attachNode('hostname1', '11830', { KeepData: false } )

查看 attachNode 后的节点信息,group1 分区组中已不存在“hostname1:11830” 节点,group2 分区组存在“hostname1:11830” 节点:

> db.listReplicaGroups()
    {
      "HostName": "hostname3",
      "Status": 1,
      "dbpath": "/opt/sequoiadb/database/data/11830/",
      "Service": [
        {
          "Type": 0,
          "Name": "11830"
        },
        {
          "Type": 1,
          "Name": "11831"
        },
        {
          "Type": 2,
          "Name": "11832"
        }
      ],
      "NodeID": 1002
    }
  ],
  "GroupID": 1002,
  "GroupName": "group1",
  "PrimaryNode": 1002,
  "Role": 0,
  "Status": 1,
  "Version": 7,
  "_id": {
    "$oid": "580adfd531ae32109e38ca29"
  }
}
......
{
  "Group": [
    {
      "HostName": "hostname1",
      "Status": 1,
      "dbpath": "/opt/sequoiadb/database/data/11830/",
      "Service": [
        {
          "Type": 0,
          "Name": "11830"
        },
        {
          "Type": 1,
          "Name": "11831"
        },
        {
          "Type": 2,
          "Name": "11832"
        }
      ],
      "NodeID": 1010
    },
    {
      "HostName": "hostname2",
      "Status": 1,
      "dbpath": "/opt/sequoiadb/database/data/11840/",
      "Service": [
        {
          "Type": 0,
          "Name": "11840"
        },
        {
          "Type": 1,
          "Name": "11841"
        },
        {
          "Type": 2,
          "Name": "11842"
        }
      ],
      "NodeID": 1000
    },
    ......
  ],
  "GroupID": 1000,
  "GroupName": "group2",
  "PrimaryNode": 1000,
  "Role": 0,
  "Status": 1,
  "Version": 7,
  "_id": {
    "$oid": "580adfd531ae32109e38ca27"
  }
}
回到顶部