---
title: OBClient 客户端工具如何支持多 IP 连接登录-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于OBClient 客户端工具如何支持多 IP 连接登录相关的常见问题和使用技巧，帮助您快速解决OBClient 客户端工具如何支持多 IP 连接登录的难题。
---
切换语言

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

划线反馈

# OBClient 客户端工具如何支持多 IP 连接登录

更新时间：2026-06-03 03:01

适用版本： V1.4.x、V2.1.x、V2.2.x、V3.1.x、V3.2.x、V4.0.x、V4.1.x、V4.2.x 内容类型：How-to  

当前 OBClient/MySQL 客户端工具只能支持指定一个 IP + Port 来进行连接登录（通过 -h<IP地址> -P<Port端口> 选项），如果用户在一个分布式集群环境里面配置有多个 IP 地址，通过某个 IP 地址无法连接时，需要用户手工或者用户代码切换到另一个 IP 地址来尝试连接登录，使用上较为不便。

OBClient V2.2.4 版本通过引入 `--ob-service-name=xxx` 选项，可以支持指定多个 IP 地址来连接登录。这样一来，当某个 IP 地址无法连接上时，可以自动屏蔽连接错误并切换到另外一个 IP 来自动尝试重新连接登录。

本文主要描述了该方法的详细配置步骤及连接验证。

## 操作步骤

1. 通过 `rpm` / `yum` 命令在客户端服务器上安装好 OBClient V2.2.4 或更高版本。
 2. 在需要使用 OBClient 客户端工具所在的每一台服务器上，编辑一个 `tnsnames.ora`（文件名称固定不变），内容如下：

      1. 第一步：使用 `cd` 命令进入 `tnsnames.ora` 文件所在的路径。

        ```shell
        [root@xxxxx ~]# cd /data/   <== 该路径可以用户自己指定。

        ```
      2. 第二步：在路径（`/data/`）下，使用 `cat` 命令查看 `tnsnames.ora` 内容。

        ```shell
        [root@xxxxx ~]# cat tnsnames.ora

        ```

        输出结果如下：

        ```shell
        MYTEST=
        (DESCRIPTION=
          (ADDRESS_LIST=
            (ADDRESS=(PROTOCOL=tcp)(HOST=172.xxx.xxx.23)(PORT=2883)(WEIGHT=1))
            (ADDRESS=(PROTOCOL=tcp)(HOST=172.xxx.xxx.27)(PORT=2883)(WEIGHT=1))
            (ADDRESS=(PROTOCOL=tcp)(HOST=172.xxx.xxx.29)(PORT=2883)(WEIGHT=1)))
          (CONNECT_DATA=(SERVICE_NAME=TEST))
        )

        ```

        #### 注意

        `tnsnames.ora` 文件中 `MYTEST` 就是 `OBClient` 客户端工具使用 `ob_service_name` 选项的值。
 3. 利用第二步中配置的 `tnsnams.ora` 配置文件加上 `--ob-service-name=xxx` 选项来实现 obclient 多 IP 登录：

      1. 使用 `export` 命令设置 `TNS_ADMIN` 环境变量。

        ```shell
        [root@xxxxx ~]# export TNS_ADMIN=/data   <== 这边的路径名对应第二步中 `tnsnames.ora` 文件所在的路径。

        ```
      2. 在 OBClient 客户端工具使用 `--ob-service-name=xxx` 选项，指定多个 IP 地址来连接登录。

        ```shell
        [root@xxxxxx ~]# obclient -h172.xxx.xxx.23,172.xxx.xxx.27,172.xxx.xxx.29 -uroot@sys#xxxxx -P2883 -pxxx -A -c --ob-service-name=MYTEST

        ```

        输出结果如下：

        ```shell
        Welcome to the OceanBase.  Commands end with ; or \g.
        Your OceanBase connection id is 206544
        Server version: OceanBase 4.2.1.3 (r103050012024012511-44db4190d80efddf8db98d564d661fa9417b63a6) (Built Jan 25 2024 11:58:21)

        Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.

        Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

        obclient [(none)]> \s
        --------------
        obclient  Ver 2.2.4 Distrib 10.4.18-MariaDB, for Linux (aarch64) using readline 5.1

        Connection id:          206544
        Current database:
        Current user:           root@172.xxx.xxx.23
        SSL:                    Not in use
        Current pager:          stdout
        Using outfile:          ''
        Using delimiter:        ;
        Server version:         OceanBase 4.2.1.3 (r103050012024012511-44db4190d80efddf8db98d564d661fa9417b63a6) (Built Jan 25 2024 11:58:21)
        Protocol version:       10
        Connection:             172.xxx.xxx.23 via TCP/IP
        Server characterset:    utf8mb4
        Db     characterset:    utf8mb4
        Client characterset:    utf8mb4
        Conn.  characterset:    utf8mb4
        TCP port:               2883
        Protocol:               Compressed
        Active                  --------------

        ```
 4. 第四步：测试当某一个 IP 无法连通后，OBClient 命令行工具可以自动选择下一个可用的 `IP:Port` 来尝试连接，一旦某个 `IP:Port` 连接成功则直接登录，除非所有的 `IP:Port` 都连接不上才会返回错误。

      1. 使用 `obproxyd.sh` 停止 OBProxy 进程，模拟某一个 IP 无法连通。

        ```shell
        [admin@xxxxx ~]$ /opt/taobao/install/obproxy-4.2.1.0/bin/obproxyd.sh -c stop
        obproxy stopped

        ```
      2. 检查 obproxy 进程是否存在。

        ```shell
        [admin@xxxxx ~]$ ps -ef | grep obproxy
        admin    3381646 3381456  0 15:43 pts/1    00:00:00 grep obproxy <== obproxy 进程不存在。

        ```
      3. 测试 OBClient 客户端连接状态。

        ```shell
        [root@xxxxx ~]# obclient -h172.xxx.xxx.23,172.xxx.xxx.27,172.xxx.xxx.29 -uroot@sys#xxxxx -P2883 -pxx -A -c --ob-service-name=MYTEST

        ```

        输出结果如下：

        ```shell
        Welcome to the OceanBase.  Commands end with ; or \g.
        Your OceanBase connection id is 206743
        Server version: OceanBase 4.2.1.3 (r103050012024012511-44db4190d80efddf8db98d564d661fa9417b63a6) (Built Jan 25 2024 11:58:21)

        Connection id:          206743
        Current database:
        Current user:           root@172.xxx.xxx.23
        SSL:                    Not in use
        Current pager:          stdout
        Using outfile:          ''
        Using delimiter:        ;
        Server version:         OceanBase 4.2.1.3 (r103050012024012511-44db4190d80efddf8db98d564d661fa9417b63a6) (Built Jan 25 2024 11:58:21)
        Protocol version:       10
        Connection:             172.xxx.xxx.27 via TCP/IP
        Server characterset:    utf8mb4
        Db     characterset:    utf8mb4
        Client characterset:    utf8mb4
        Conn.  characterset:    utf8mb4
        TCP port:               2883
        Protocol:               Compressed
        Active                  --------------

        ```

## 适用版本

OceanBase 数据库所有版本 + OBClient V2.2.4 或更高版本。

上一篇

[OceanBase 数据库和应用之间的通讯 TCP 原理](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003039512)

下一篇

[OceanBase 数据库 Oracle 租户 OBClient connect 用法](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002942619) ![有帮助](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) 咨询热线
