首批通过分布式安全可靠测评,为关键业务系统打造
在集群初始化前添加节点
更新时间:2026-04-10 11:58:35
本文介绍如何通过 obshell-sdk-go 向未初始化的集群添加节点。
说明
建议先查看 obshell-sdk-go 快速上手 内容,了解如何使用 obshell-sdk-go。
注意事项
向未初始化的集群添加节点前,需注意以下要求:
请求的 client 对应的节点需在待初始化的集群中(自身添加自身除外)。
需确保被添加的节点从未加入过任何集群。
当向自身添加自身节点时,需确保该节点从未加入任何集群,并且 obshell 正常运行。
示例代码
以下代码用于向 10.10.10.1 机器添加自身节点成为 Master,再为其添加其他节点(10.10.10.2)为 Follower。
package main
import (
"github.com/oceanbase/obshell-sdk-go/services"
)
func main() {
// 创建 client 实例,节点地址为 '10.10.10.1',端口为 2886。
client, err := services.NewClient("10.10.10.1", 2886)
if err != nil {
panic(err)
}
// join 自己。
req := client.V1().NewJoinRequest("10.10.10.1", 2886, "zone1")
if _, err = client.V1().JoinSyncWithRequest(req); err != nil {
panic(err)
}
// 向 '10.10.10.1' 所在集群,添加节点 '10.10.10.2:2886'。
req = client.V1().NewJoinRequest("10.10.10.2", 2886, "zone1")
if _, err = client.V1().JoinSyncWithRequest(req); err != nil {
panic(err)
}
}
package main
import (
"github.com/oceanbase/obshell-sdk-go/services"
)
func main() {
// 创建 client 实例,节点地址为 '10.10.10.1',端口为 2886。
client, err := services.NewClient("10.10.10.1", 2886)
if err != nil {
panic(err)
}
// join 自己。
req := client.V1().NewJoinRequest("10.10.10.1", 2886, "zone1")
dag, err := client.V1().JoinWithRequest(req)
if err != nil {
panic(err)
}
// 等待任务成功
if _, err = client.V1().WaitDagSucceed(dag.GenericID); err != nil {
panic(err)
}
// 向 '10.10.10.1' 所在集群,添加节点 '10.10.10.2:2886'。
req = client.V1().NewJoinRequest("10.10.10.2", 2886, "zone1")
dag, err = client.V1().JoinWithRequest(req)
if err != nil {
panic(err)
}
// 等待任务成功
if _, err = client.V1().WaitDagSucceed(dag.GenericID); err != nil {
panic(err)
}
}
相关文档
在集群初始化前添加节点的 API 接口说明可参见 在集群初始化前添加节点。
通过 obshell-sdk-python 请求 API 方法的介绍可参见 在集群初始化前添加节点。