通过 Go 客户端连接 OceanBase 数据库

为您介绍使用 Go 客户端通过代理模式连接数据库的操作。

前提条件

  • 在使用 GO 客户端时,尽量使用最新版本的客户端,最新版本客户端请详见GitHub go 客户端仓库

  • 引入 obkv-table-client-go 依赖,在本地 GO 仓库上执行以下命令,获取最新obkv-table-client-go依赖,也可以获取指定的版本。

    go get github.com/oceanbase/obkv-table-client-go

连接方法

云数据库 OceanBase 支持通过代理模式连接数据库,您可使用直接调用函数连接数据库和使用 toml 文件连接数据库两种方式。

方法一:直接调用函数

在您的 Go 代码中调用函数,并参考表格中的内容修改参数,进行数据库连接。

func NewOdpClient(
	fullUserName string,
	passWord string,
	odpIP string,
	odpRpcPort int,
	database string,
	cliConfig *config.ClientConfig) (Client, error)
  • param 参数说明

    参数

    说明

    fullUserName

    格式为 <账号名称>@<租户名称>#<集群名称>。

    passWord

    fullUserName 中的账号密码。

    odpIP

    OceanBase 数据库连接的域名。

    odpRpcPort

    提供 OceanBase 数据库宽表引擎(或 KV 模式)服务端口,默认是 3307。

    database

    需要连接的数据库名称。

    cliConfig

    客户端配置,具体见 ClientConfig

方法二:使用 toml 文件

  1. 参考模板文件configurations/obkv-table-default.toml制定您的配置文件,选择 Mode 模式为 proxy,修改OdpClientConfig内容,其他内容根据实际业务需求修改,具体内容参考ClientConfig

  2. 在您的 Go 代码中调用函数, 输入 toml文件地址/位置。

    func NewClientWithTomlConfig(configFilePath string) (Client, error)
    • param 参数说明

      参数

      说明

      configFilePath

      toml文件路径:configurations/obkv-table-default.toml

    • return 参数说明

      参数

      说明

      Client

      客户端接口, 接口包含 insert、get、update 等方法,更多内容参见通过 Go 客户端连接数据库使用示例

      error

      错误信息。

ClientConfig

代码示例:

type ClientConfig struct {
        ConnPoolMaxConnSize int
        ConnConnectTimeOut  time.Duration
        ConnLoginTimeout    time.Duration
        OperationTimeOut    time.Duration
        LogLevel            log.Level

        TableEntryRefreshLockTimeout     time.Duration
        TableEntryRefreshTryTimes        int
        TableEntryRefreshIntervalBase    time.Duration
        TableEntryRefreshIntervalCeiling time.Duration

        MetadataRefreshInterval    time.Duration
        MetadataRefreshLockTimeout time.Duration

        RsListLocalFileLocation    string
        RsListHttpGetTimeout       time.Duration
        RsListHttpGetRetryTimes    int
        RsListHttpGetRetryInterval time.Duration

        EnableRerouting bool
}

重要配置项说明:

配置项

说明

ConnPoolMaxConnSize

连接池连接数量, 默认值 1。

ConnConnectTimeOut

tcp 连接超时时间, 默认 1s。

ConnLoginTimeout

鉴权操作超时时间, 默认 1s。

OperationTimeOut

单个请求超时时间, 默认 10s。

EnableRerouting

是否开启二次路由功能, 默认关闭。