-
文档
-
关于 SequoiaDB
安装
系统要求
安装部署
基本操作
数据模型
SQL引擎
PostgreSQL实例组件
MySQL实例组件
FileSystem引擎
S3引擎
系统架构
编目节点
分区组
数据库管理
特殊配置项修改
数据库工具
集群启停
集群扩容
备份恢复
日志归档重放
监控
快照
列表
安全
查询访问计划
基于代价的访问计划评估
查看访问计划
统计信息
连接器
驱动
C驱动
C++驱动
CSharp驱动
Java开发驱动
PHP驱动
Python驱动
REST接口
参考手册
SequoiaDB Shell方法
概述
Global
Sdb
SdbCS
SdbCollection
SdbCursor
SdbQuery
SdbReplicaGroup
SdbNode
SdbDomain
Oma
File
FileContent
Cmd
Remote
Hash
IniFile
Sdbtool
Ssh
System
辅助类型对象
特殊类型对象
操作符
匹配符
选择符
函数操作
更新符
聚集符
SQL语法
语句
子句
函数
监控视图
故障排除
常见错误
SAC 管控中心
安装与登录
部署
主机操作
存储集群操作
MySQL 实例操作
PostgreSQL 实例操作
监控
配置
SequoiaDB 数据操作
集合空间
集合
索引
记录
PostgreSQL 实例数据操作
MySQL 实例数据操作
Web服务
attachNode()
语法
rg.attachNode( <host>, <service>, <options> )
将一个已经创建完成但不属于任何分区组的节点加入到当前分区组。可以搭配 rg.detachNode() 使用。目前可以支持加入到数据组或者编目组。
参数描述
参数名 | 参数类型 | 描述 | 是否必填 |
---|---|---|---|
host | string | 节点的主机名或者主机 IP。 | 是 |
service | string | 节点服务名或者端口。 | 是 |
options | Json 对象 | 详见options选项说明。 | 是 |
options选项
参数名 | 参数类型 | 描述 | 默认值 |
---|---|---|---|
KeepData | bool | 是否保留新加节点原有的数据。 | 无默认值,需用户显式指定。 |
Note:
- 参数 options 中的 KeepData 字段为必填项,需用户显式指定。由于该选项会决定新节点数据是否继续被保留,用户应该谨慎考虑。
- 如果新加的节点原本不属于当前组,建议用户将 KeepData 设置为 false。否则,一旦发生主备切换及全量同步,当前组原有节点的数据将有可能被新加节点的数据覆盖。
- 节点配置文件中角色(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" } }