---
title: "obshell-sdk-go 快速上手 - OceanBase 数据库 V4.3.1 | OceanBase 文档中心"
description: obshell-sdk-go 快速上手 环境要求 需确保环境中的 obshell 处于运行状态。 操作步骤 安装 obshell-sdk-go go get github.com/oceanbase/obshell-sdk-go 创建客户端 您可以选择创建单一版本客户端，或者创建多版本客户端集。 创建单一版本客户端 …
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.1

# obshell-sdk-go 快速上手

更新时间：2026-04-10 11:58:01

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.1/zh-CN/700.reference/1500.Components-and-Tools/100.manage/100.obshell/500.obshell-sdk-reference/200.go/100.quickstart-of-go.md)  

## 环境要求

需确保环境中的 obshell 处于运行状态。

## 操作步骤

1. 安装 obshell-sdk-go

   ```shell
   go get github.com/oceanbase/obshell-sdk-go

   ```
 2. 创建客户端

   您可以选择创建单一版本客户端，或者创建多版本客户端集。

       创建单一版本客户端   创建多版本客户端集

   ```go
   package main

   import (
       "github.com/oceanbase/obshell-sdk-go/services/v1"
   )

   func main() {
       client, err := v1.NewClientWithPassword("10.10.10.1", 2886, "${password}")
       if err != nil {
           // Handle exceptions
           panic(err)
        }
   }

   ```

   import (
       "github.com/oceanbase/obshell-sdk-go/services"
   )

   func main() {
       clientset, err := services.NewClientWithPassword("10.10.10.1", 2886, "${password}")
       if err != nil {
           // Handle exceptions
           panic(err)
       }
   }

   ```

   示例中的 `10.10.10.1` 为目标 obshell 节点的 IP 地址，`2886` 为目标 obshell 节点的服务端口号，需根据实际情况修改为对应的 IP 和端口号。`${password}` 需配置为目标 obshell 所在集群 root@sys 用户的密码。
 3. 部署 OceanBase 集群

   obshell-sdk-go 提供了两类方法来创建一个 OceanBase 集群：一是向 obshell 请求对应的 API 方法成功后，立刻返回；二是向 obshell 请求 API 成功后，等待 obshell 任务执行完成后再返回。前者任务异步执行，后者任务同步执行。

   本节以部署一个 1-1-1 集群为例，代码如下：

       任务异步执行   任务同步执行

    import (
        "github.com/oceanbase/obshell-sdk-go/services"
        "github.com/oceanbase/obshell-sdk-go/services/v1"
    )

    func main() {
        client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
        if err != nil {
            panic(err)
        }

        // join 自己成为 MASTER
        joinRequest1 := client.V1().NewJoinRequest("10.10.10.1", 2886, "zone1")
        dag, err := client.V1().JoinSyncWithRequest(joinRequest1)
        if err != nil {
            panic(err)
        }
        if _, err = client.V1().WaitDagSucceed(dag.GenericID); err != nil {
            panic(err)
        }

        // 加入 follower 到集群
        joinRequest2 := client.V1().NewJoinRequest("10.10.10.2", 2886, "zone2")
        dag, err = client.V1().JoinSyncWithRequest(joinRequest2)
        if err != nil {
            panic(err)
        }
        if _, err = client.V1().WaitDagSucceed(dag.GenericID); err != nil {
            panic(err)
        }

        joinRequest3 := client.V1().NewJoinRequest("10.10.10.3", 2886, "zone3")
        dag, err = client.V1().JoinSyncWithRequest(joinRequest3)
        if err != nil {
            panic(err)
        }
        if _, err = client.V1().WaitDagSucceed(dag.GenericID); err != nil {
            panic(err)
        }

        // obshell prior to 4.2.3.0 should use mysqlPort(rpcPort) instead of mysql_port(rpc_port).
        configs := map[string]string{
            "mysql_port": "2881", "rpc_port": "2882", "datafile_size": "24G", "cpu_count": "16", "memory_limit": "16G", "system_memory": "8G", "log_disk_size": "24G",
        }
        // 设置各个 OBServer 节点的配置项
        configObserverReq := client.V1().NewConfigObserverRequest(configs, v1.SCOPE_GLOBAL)
        dag, err = client.V1().ConfigObserverSyncWithRequest(configObserverReq)
        if err != nil {
            panic(err)
        }
        if _, err = client.V1().WaitDagSucceed(dag.GenericID); err != nil {
            panic(err)
        }

        // 设置 OceanBase 集群的配置信息
        configObclusterReq := client.V1().NewConfigObclusterRequest("obshell-sdk-test", 12358).SetRootPwd("****")
        dag, err = client.V1().ConfigObclusterSyncWithRequest(configObclusterReq)
        if err != nil {
            panic(err)
        }
        if _, err = client.V1().WaitDagSucceed(dag.GenericID); err != nil {
            panic(err)
        }

        // 初始化集群
        initReq := client.V1().NewInitRequest()
        dag, err = client.V1().InitSyncWithRequest(initReq)
        if err != nil {
            panic(err)
        }
        if _, err = client.V1().WaitDagSucceed(dag.GenericID); err != nil {
            panic(err)
        }
    }

   ```

        // join 自己成为 MASTER
        joinRequest1 := client.V1().NewJoinRequest("10.10.10.1", 2886, "zone1")
        if _, err = client.V1().JoinSyncWithRequest(joinRequest1); err != nil {
            panic(err)
        }

        // 加入 follower 到集群
        joinRequest2 := client.V1().NewJoinRequest("10.10.10.2", 2886, "zone2")
        if _, err = client.V1().JoinSyncWithRequest(joinRequest2); err != nil {
            panic(err)
        }

        joinRequest3 := client.V1().NewJoinRequest("10.10.10.3", 2886, "zone3")
        if _, err = client.V1().JoinSyncWithRequest(joinRequest3); err != nil {
            panic(err)
        }

        // obshell prior to 4.2.3.0 should use mysqlPort(rpcPort) instead of mysql_port(rpc_port).
        configs := map[string]string{
            "mysql_port": "2881", "rpc_port": "2882", "datafile_size": "24G", "cpu_count": "16", "memory_limit": "16G", "system_memory": "8G", "log_disk_size": "24G",
        }
        // 设置各个 OBServer 节点的配置项
        configObserverReq := client.V1().NewConfigObserverRequest(configs, v1.SCOPE_GLOBAL)
        if _, err = client.V1().ConfigObserverSyncWithRequest(configObserverReq); err != nil {
            panic(err)
        }

        // 设置 OceanBase 集群的配置信息
        configObclusterReq := client.V1().NewConfigObclusterRequest("obshell-sdk-test", 12358).SetRootPwd("****")
        if _, err = client.V1().ConfigObclusterSyncWithRequest(configObclusterReq); err != nil {
            panic(err)
        }

        // 初始化集群
        initReq := client.V1().NewInitRequest()
        if _, err = client.V1().InitSyncWithRequest(initReq); err != nil {
            panic(err)
        }
    }

   ```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
