联系我们
18591797788
hubin@rlctech.com
北京市海淀区中关村南大街乙12号院天作国际B座1708室
18681942657
lvyuan@rlctech.com
上海市浦东新区商城路660号乐凯大厦26c-1
18049488781
xieyi@rlctech.com
广州市越秀区东风东路华宫大厦808号1608房
029-81109312
service@rlctech.com
西安市高新区天谷七路996号西安国家数字出版基地C座501
适用版本:
OBClient V1.4.x、V2.1.x、V2.2.x、V3.1.x、V3.2.x、V4.0.x、V4.1.x、V4.2.x;OceanBase 数据库全版本
核心说明:
OBClient 原生仅支持单 IP+Port 连接,OBClient V2.2.4 及以上版本新增 --ob-service-name 选项,支持多 IP 自动切换连接,解决分布式集群连接不便问题
当前 OBClient/MySQL 客户端工具仅支持通过 -h -P 指定单个 IP+Port 连接。在分布式集群多 IP 配置场景下,若指定 IP 连接失败,需手动/代码切换 IP,使用体验较差。
在客户端服务器通过 rpm/yum 命令安装 OBClient V2.2.4 及以上版本。
[root@xxxxx ~]# cd /data/
[root@xxxxx ~]# vi tnsnames.ora
MYTEST=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=192.xxx.xxx.46)(PORT=2883)(WEIGHT=1))
(ADDRESS=(PROTOCOL=tcp)(HOST=192.xxx.xxx.47)(PORT=2883)(WEIGHT=1))
(ADDRESS=(PROTOCOL=tcp)(HOST=192.xxx.xxx.48)(PORT=2883)(WEIGHT=1)))
(CONNECT_DATA=(SERVICE_NAME=TEST))
)
注:SERVICE_NAME=TEST中 ‘TEST’ 是Oracle租户的用户名,或者MySQL租户的库名。
MYTEST:后续 --ob-service-name 选项的取值,需与配置文件中名称一致ADDRESS_LIST:配置集群多个 IP+Port 地址,可按需增删WEIGHT:权重值,用于连接优先级分配(示例中均为1,权重相同)SERVICE_NAME:OceanBase 数据库的服务名,需与集群实际配置匹配设置环境变量,指定 tnsnames.ora 文件所在路径,命令如下(路径与步骤2一致):
[root@xxxxx ~]# export TNS_ADMIN=/data
> 说明:该环境变量仅对当前终端会话生效;若需永久生效,可将命令写入 /etc/profile 或用户目录下的 .bashrc 文件,执行 source 命令生效。
使用 OBClient 连接命令,结合 --ob-service-name 选项实现多 IP 自动切换连接,完整命令示例:
obclient -h192.xxx.xxx.46,192.xxx.xxx.47,192.xxx.xxx.48 -uroot@sys#xxxxx -P2883 -pxxx -A -c --ob-service-name=MYTEST
| 参数 | 说明 |
|---|---|
-h |
集群多个 IP 地址,用英文逗号分隔 |
-u |
数据库用户名(示例:root@sys#xxxxx,需替换为实际账号) |
-P |
数据库端口(OceanBase 常用端口2883) |
-p |
数据库密码(示例:xxx,需替换为实际密码) |
-A |
自动补全功能(可选) |
-c |
保留注释(可选) |
--ob-service-name |
指定 tnsnames.ora 中配置的服务名(MYTEST) |
[admin@xxxxx ~]$ /opt/taobao/install/obproxy-4.2.1.0/bin/obproxyd.sh -c stop
验证进程已停止:
[admin@xxxxx ~]$ ps -ef | grep obproxy
无 obproxy 进程则表示模拟成功。
[root@xxxxx ~]# obclient -h192.xxx.xxx.46,192.xxx.xxx.47,192.xxx.xxx.48 -uroot@sys#xxxxx -P2883 -pxx -A -c --ob-service-name=MYTEST
Connection 字段显示为其他可用 IP(如示例中的192.xxx.xxx.47),则说明多 IP 自动切换功能生效;仅当所有 IP 均无法连接时,才会返回连接错误。执行 \s 命令查看连接详情,确认连接状态、服务器版本、字符集等信息正常,示例输出核心片段:
obclient [(none)]> \s
--------------
obclient Ver 2.2.4 Distrib 10.4.18-MariaDB, for Linux (aarch64) using readline 5.1
Connection id: 206544
Current user: root@192.xxx.xxx.46
Server version: OceanBase 4.2.1.3 (r103050012024012511-44db4190d80efddf8db98d564d661fa9417b63a6)
Connection: 192.xxx.xxx.46 via TCP/IP
--------------
--ob-service-name 多 IP 自动切换功能,低版本无此特性。tnsnames.ora 文件名固定,不可修改;TNS_ADMIN 环境变量需指向该文件所在目录,而非文件本身。export TNS_ADMIN=xxx 写入系统环境配置文件并生效,避免每次登录都需手动设置。如果你在实际操作中遇到问题,可以在评论区留言交流。后续我们会持续分享更多运维干货,记得关注不迷路,下次见~