文档中心

reelect()

名称

reelect - 在当前复制组中重新选举。

语法

rg.reelect( [options] )

类别

Replica Group

描述

在当前复制组中重新选举。

参数

参数名 参数类型 描述 是否必填
options Json 对象 可选项,详见如下option选项说明。

options 参数详细说明如下:

参数名 参数类型 描述 默认值
Seconds int 重新选举需要在多少秒内完成。 30

Note:
1. 返回超时错误代表在规定时间内重选没有完成。如果返回成功,需等待若干秒,待编目信息异步更新完成后,再通过db.listReplicaGroups()观察最终结果。

  1. 只有复制组中存在主节点时才可以进行重新选举。

  2. 当使用NodeID时,则HostName、ServiceName不生效。

  3. 当没有指定具体的 NodeID、ServiceName 的情况下,如果有多个节点都可当选主节点时,此时选举的匹配规则为:节点的 LSN 号(日志序号) > 节点权重 > 节点 ID,优先选取 LSN 号最大的节点,若 LSN 号一致,则选取权重值大的节点,若节点权重一致,则选取节点 ID 最大的节点为主节点。节点的权重设置可以参考数据库配置

  4. 复制组中的可用节点(存活节点)至少需要占总节点数半数以上,才能进行选举。

  5. 选举的具体描述可以参考选举机制

返回值

无返回值,出错抛异常,并输出错误信息。

错误

reelect()函数常见异常如下:

错误码 错误类型 描述 解决方法
-104 SDB_CLS_NOT_PRIMARY 分区组不存在主节点 检查当前分区组是否存在 "IsPrimary" 为 "true" 的节点。若当前分区组存在节点未启,请启动节点。

如果出错则抛异常,并输出错误信息,可以通过getLastErrMsg()获取错误信息,通过getLastError()获取错误码。常见错误处理可以参考常见错误处理指南

错误

错误码

示例

在 group1 中进行重新选举,超时时间为60s。

> var rg = db.getRG("group1")
> rg.reelect({Seconds:60})
回到顶部