OceanBase
  • 产品
  • 解决方案
  • 客户
  • 合作伙伴
  • 资源与服务
  • 文档
  • 社区
云控制台登录 / 注册
  • 免费试用
OceanBase AI 数据平台

基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。

一体化能力

TP 事务处理

关键业务稳定运行,保障数据零丢失

AP 实时分析

事务分析一体,驱动智能决策与运营

AI 现代负载

统一多模态数据,支撑生产级应用

关键产品
OceanBase 分布式数据库

首批通过安全可靠测评,面向关键业务

OceanBase 集中式数据库

集中式架构,兼具性能与成本优势

OceanBase AI 数据库

面向 AI 应用与 Agent 的多模数据库

OceanBase AI 湖库

湖库一体的 AI 多模态数据系统

OceanBase DataPilot

企业级 AI 数据分析 Agent

OceanBase Agentbase

企业级 Agent 后端基础设施

OceanBase OAgent

数据库 AI 运维 Agent

OB Cloud

一体化云数据库,提供多云一致体验

OceanBase 数据库一体机

软硬一体,极致性能与高可靠性保障

OceanBase AI 一体机

开箱即用的 AI 数据库一体机

OMA 迁移评估工具

全链路数据库迁移评估

OMS 数据迁移工具

一站式数据传输与同步

OCP 运维管理工具

数据库全生命周期管理

ODC 开发者工具

数据库开发与管控协同

OAS 自治服务工具

数据库智能诊断与自治

通用场景
全场景业务系统 OLTP
实时分析混合负载
异地多活
多基础设施部署
一站式传统数据库升级
混合云部署
一库多芯软硬件混合部署
分布式数据库单机部署
大存储类数据库降本
冷数据归档降本
多实例资源整合
分库分表一体化升级
高并发场景
数据中台
行业解决方案
国有大行和股份制银行核心系统解决方案
区域性银行核心系统解决方案
寿险核心系统解决方案
产险核心系统解决方案
资管交易类系统解决方案
资管 TA 清算类系统解决方案
运营商核心系统解决方案
人社核心系统解决方案
电力核心系统解决方案
行业专区
银行专区

助力银行完成各类核心业务系统升级

保险专区

寿险、产险核心系统升级的更佳选择

零售专区

助力200+零售行业客户规模化落地

DB 大咖说
OceanBase客户-爱奇艺爱奇艺

百亿级卡券业务的“单库双擎”架构升级

OceanBase客户-四川银行四川银行

800个测试用例选定分布式数据库

OceanBase客户-太平洋保险太平洋保险

先难后易,核心系统数据库升级复盘

行业案例
OceanBase客户-交通银行交通银行

核心数据库的“分布式革命”

OceanBase客户-中国移动中国移动

B域核心CRM&BOSS近乎零改造分布式升级

OceanBase客户-理想理想

打造领先的智能制造系统和自动驾驶体验

演讲实录
OceanBase客户-中国联通中国联通

集团应用分布式数据库覆盖B/O/M域

OceanBase客户-国泰海通国泰海通

智能推送系统稳定支撑单日亿级消息处理量

OceanBase客户-中国联合航空中国联合航空

中国首款机票盲盒背后的数据库力量

用户实践
OceanBase客户-北京银行北京银行

最快速度完成40余套系统国产数据库升级

OceanBase客户-VIVOVIVO

替换 MySQL 分库分表,探索成本效益最优

OceanBase客户-滴滴滴滴

数据库大规模运维体系建设及落地实践

合作伙伴
合作伙伴类型
联合解决方案
产业生态伙伴
经销商伙伴
技术服务伙伴
培训认证伙伴
生态联合解决方案
神州信息 x OceanBase 银行核心系统
长亮科技 x OceanBase 新核心系统
中电金信 x OceanBase 金融分布式核心系统
天阳科技 x OceanBase 贷记卡方案
易诚互动 x OceanBase 手机银行方案
恒生 x OceanBase UF3.0/O45/TA/估值方案
商业发行版
云树®数据库软件 ActionDB
服务
支持与服务
提交工单
软件下载
OceanBase 企业版
OceanBase 社区版
OB Cloud
学习
培训与认证
在线课堂
在线体验
开发者
开发者中心
资料
行业报告与白皮书
官方博客
年度发布会资料
开发者大会资料
oceanbase白皮书

金融核心系统数据库升级路径与场景实践

oceanbase白皮书

人社关键业务数据库一体化升级实践

产品文档
oceanbaseOceanBase 数据库
数据库一体机
oceanbaseOceanBase AI 数据库
工具与组件
oceanbaseOB Cloud 云数据库
驱动和中间件
快速上手
OceanBase 数据库
OB Cloud 云数据库
知识库
汇聚常见产品使用问题案例
在线体验

Demo与实验,感受 OceanBase 的核心能力与应用场景

OceanBase 最佳实践
了解 OceanBase 分布式数据库的架构与系统原理
技术博客

技术解析 | 用户实践 | 社区月报

在线课堂

电子书 |视频课程|在线培训

Developer Hub
应用开发Demo | 数据开发与集成工具
问答论坛

快速答疑 | 常见问题 | 技术交流

社区活动

Meetup | 技术公开课

GitHub

查看源码 | 贡献代码 | 建议反馈

加入社区

社区组织 | 社区用户贡献 |开发者贡献

进入社区首页
oceanbase数据库大赛

第六届OceanBase数据库大赛

oceanbase免费课程

《Easy Data x AI》:面向所有 AI 爱好者的 Data 与 AI 基础知识入门教程

切换语言
  • 中文站 - 简体中文
  • International - English
  • 日本站 - 日本語
文档反馈
  1. 文档中心
  2. OceanBase 安装部署工具社区版
  3. V3.1.0
  4. 使用指南
  5. 命令行
  6. 使用命令行部署 obconfigserver
V3.1.0社区版
  • 什么是 obd
  • 快速上手
  • obd 命令
  • 使用指南
    • 配置文件说明
    • 图形化界面
    • 命令行
      • 单机部署 OceanBase 集群
      • 使用命令行部署 OCP Express
      • 使用命令行部署 obconfigserver
      • 部署 Binlog 服务
      • 通过命令行部署 oblogproxy
      • 使用命令行部署 OCP
      • 使用 OCP 接管 obd 部署的集群
      • 使用 obd 接管集群
      • 为现有集群增加白屏监控
      • 升级 OCP Express
      • 升级 OceanBase 数据库
      • 主备租户
      • 扩容与组件变更
      • 性能测试
      • 集群诊断
  • 常见问题
  • 模式配置规则
  • 错误码
  • 版本发布记录
  1. 文档中心
  2. OceanBase 安装部署工具社区版
  3. V3.1.0
  4. 使用指南
  5. 命令行
  6. 使用命令行部署 obconfigserver

使用命令行部署 obconfigserver

更新时间:2026-04-14 17:55:52

github-fill编辑
编组分享

部署 obconfigserver 时,您可以选择单独部署,也可以和 OceanBase 数据库以及 ODP 一起部署,本文以合并部署为例介绍如何使用命令行部署 obconfigserver,并简单介绍部署 obconfigserver 后如何使用。

组件介绍

  • ODP

    OceanBase Database Proxy,OceanBase 数据库代理,是 OceanBase 数据库专用的代理服务器,简称为 ODP(又称为 OBProxy)。详细信息请参见 OceanBase 数据库代理文档。

  • obconfigserver

    OceanBase Configserver,obconfigserver 可提供 OceanBase 的元数据注册,存储和查询服务。详细信息请参见 ob-configserver。

部署 obconfigserver

本节介绍如何和 OceanBase 数据库以及 ODP 一起部署 obconfigserver。一起部署的情况下,启动成功后该 OceanBase 数据库会被注册到 obconfigserver 中。

说明

单独部署 obconfigserver 时,您只需将 OceanBase 数据库和 ODP 的组件配置信息删去即可。

步骤一:修改配置文件

若您要同时部署 OceanBase 数据库、ODP 和 obconfigserver,只需在部署 OceanBase 数据库和 ODP 的配置文件下新增 ob-configserver 组件信息,并在 OceanBase 数据库和 ODP 的组件下配置依赖 ob-configserver。

创建一个配置文件 config.yaml,该配置文件中各个组件的配置及注意事项如下所示。

  1. 用户配置

    ## Only need to configure when remote login is required
    user:
      username: admin
    #   password: your password if need
      key_file: /home/admin/.ssh/id_rsa
    #   port: your ssh port, default 22
    #   timeout: ssh connection timeout (second), default 30
    

    username 为登录到目标机器的用户名,确保您的用户名有 home_path 的写权限。password 和 key_file 均用于验证用户,通常情况下只需要填写一个。

    注意

    在配置秘钥路径后,如果您的秘钥不需要口令,请注释或者删除 password,以免 password 被视为秘钥口令用于登录,导致校验失败。

  2. OceanBase 数据库

    oceanbase-ce:
      depends:
        - ob-configserver
      servers:
        - name: server1
          # Please don't use hostname, only IP can be supported
          ip: 10.10.10.2
        - name: server2
          ip: 10.10.10.3
        - name: server3
          ip: 10.10.10.4
      global:
        # The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
        home_path: /home/admin/observer
        # The directory for data storage. The default value is $home_path/store.
        # data_dir: /data
        # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
        # redo_dir: /redo
        # Please set devname as the network adaptor's name whose ip is  in the setting of severs.
        # if set severs as "127.0.0.1", please set devname as "lo"
        # if current ip is 192.168.1.10, and the ip's network adaptor's name is "eth0", please use "eth0"
        devname: eth0
        cluster_id: 1
        # please set memory limit to a suitable value which is matching resource.
        memory_limit: 6G # The maximum running memory for an observer
        system_memory: 1G # The reserved system memory. system_memory is reserved for general tenants. The default value is 30G.
        datafile_size: 20G # Size of the data file.
        log_disk_size: 15G # The size of disk space used by the clog files.
        cpu_count: 16
        scenario: htap
        mysql_port: 2881 # External port for OceanBase Database. The default value is 2881. DO NOT change this value after the cluster is started.
        rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882. DO NOT change this value after the cluster is started.
        production_mode: false
        enable_syslog_wf: false # Print system logs whose levels are higher than WARNING to a separate log file. The default value is true.
        max_syslog_file_count: 4 # The maximum number of reserved log files before enabling auto recycling. The default value is 0.
        # Cluster name for OceanBase Database. The default value is obcluster. When you deploy OceanBase Database and obproxy, this value must be the same as the cluster_name for obproxy.
        appname: obcluster
        root_password: ****** # root user password
        proxyro_password: ****** # proxyro user password, consistent with obproxy's observer_sys_password, can be empty
      server1:
        zone: zone1
      server2:
        zone: zone2
      server3:
        zone: zone3
    

    配置文件中各配置项含义可参见 配置文件说明。需要注意的配置项如下:

    • depends:您需配置 oceanbase-ce 组件依赖于 ob-configserver 组件,否则无法将该 OceanBase 数据库注册到 obconfigserver 中。

    • appname:用于配置集群的名字,不配置的情况下 OceanBase 数据库无法注册到 obconfigserver 中。

    • OceanBase 数据库版本为 V4.3.0 或之后版本时,配置文件中若未配置 scenario,obd 会提供交互式选项供用户选择负载类型。

  3. ODP 组件

    obproxy-ce:
      # Set dependent components for the component.
      # When the associated configurations are not done, obd will automatically get the these configurations from the dependent components.
      depends:
        - oceanbase-ce
        - ob-configserver
      servers:
        - 10.10.10.5
      global:
        listen_port: 2883 # External port. The default value is 2883.
        prometheus_listen_port: 2884 # The Prometheus port. The default value is 2884.
        rpc_listen_port: 2885
        home_path: /home/admin/obproxy
        # oceanbase root server list
        # format: ip:mysql_port;ip:mysql_port. When a depends exists, obd gets this value from the oceanbase-ce of the depends.
        # rs_list: 10.10.10.1:2881;10.10.10.2:2881;10.10.10.3:2881
        enable_cluster_checkout: false
        # observer cluster name, consistent with oceanbase-ce's appname. When a depends exists, obd gets this value from the oceanbase-ce of the depends.
        # cluster_name: obcluster
        skip_proxy_sys_private_check: true
        enable_strict_kernel_release: false
        # obproxy_sys_password: # obproxy sys user password, can be empty. When a depends exists, obd gets this value from the oceanbase-ce of the depends.
        # observer_sys_password: # proxyro user password, consistent with oceanbase-ce's proxyro_password, can be empty. When a depends exists, obd gets this value from the oceanbase-ce of the depends.
    

    配置文件中各配置项含义可参见 配置文件说明。您需注意请勿配置 rs_list 配置项,否则 ODP 无法获取 obconfigserver 中注册的集群信息。

  4. obconfigserver 组件

    ob-configserver:
      servers:
        - 10.10.10.1
      global:
        listen_port: 8080 # The port of ob-configserver web
        server_ip: 0.0.0.0 # Listen to the ob-configserver server IP。When you want to listen to the specified IP address,use it.
        home_path: /home/admin/ob-configserver  # The working directory for prometheus. ob-configserver is started under this directory. This is a required field.
        ## log config
        # log_level: info # Log printing level of ob-configserver。The default value is `info`
        # log_maxsize: 30 # The total size of manager ob-configserver.Log size is measured in Megabytes.The default value is 30
        # log_maxage:7 # The days of manager expired ob-configserver.Log retention days. The default value is 7
        # log_maxbackups: 10  #The number of manager expired ob-configserver.Log. The default value is 10
        # log_localtime: true #  Switch of ob-configserver.Log naming with localtime. The default value is true
        # log_compress: true # Compress ob-configserver.Log switch. The default value is true
    
        ## vip config, configserver will generate url with vip_address and port and return it to the client
        ## do not use some random value that can't be connected
        # vip_address: "10.10.10.1"
        # vip_port:8080
        ## storage config
        # storage:
          ## database type, support sqlite3 or mysql
          # sqlite3:
          # database_type: sqlite3
          # connection_url: "/home/admin/ob-configserver/.data.db?cache=shared&_fk=1"
    
          # mysql:
          # database_type: mysql
          # connection_url: "$user:$password@tcp($IP:$PORT)/$metadb?parseTime=true"
    

    配置文件介绍:

    • server_ip:ob-configserver 服务访问白名单,默认为 0.0.0.0,表示 ob-configserver 所在服务器的所有 IP 都可以访问。

    • vip_address 和 vip_port:vip_address 和 vip_port 为负载均衡访问地址配置项。若要在 servers 下配置多个节点,您需使用负载均衡,请在配置好负载均衡后,填写负载均衡地址 IP 与端口。

    • database_type:数据库类型,提供 sqlite3 与 mysql,默认为 sqlite3 类型,推荐使用 mysql 类型。

    • connection_url:数据库连接 URL。选择 sqlite3 类型时默认为 $home_path/.data.db?cache=shared&_fk=1;选择 mysql 类型时,connection_url 可以是 OceanBase 数据库,也可以是原生 MySQL。指定的数据库用户需要有 URL 里对应库 DDL 和 DML 的权限,需注意的是,使用 OceanBase 数据库时这里的库名请勿使用 oceanbase 库,否则会提示没有权限。

步骤二:启动 obconfigserver

  1. 部署 obconfigserver

    [admin@obtest ~]$ obd cluster deploy test -c config.yaml
    
  2. 启动 obconfigserver

    [admin@obtest ~]$ obd cluster start test
    

    输出如下,可以看到 obconfigserver 访问地址的打印信息。

    +-----------------------------------------------------------+
    |                      ob-configserver                      |
    +---------+------+---------------+----------+--------+------+
    | server  | port | vip_address   | vip_port | status | pid  |
    +---------+------+---------------+----------+--------+------+
    | 0.0.0.0 | 8080 | 10.10.10.1    | 8080     | active | 6270 |
    +---------+------+---------------+----------+--------+------+
    curl -s 'http://10.10.10.1:8080/services?Action=GetObProxyConfig' |jq .
    Wait for observer init ok
    +-------------------------------------------------+
    |                 oceanbase-ce                    |
    +---------------+---------+------+-------+--------+
    | ip            | version | port | zone  | status |
    +---------------+---------+------+-------+--------+
    | 10.10.10.2    | 4.2.0.0 | 2881 | zone1 | ACTIVE |
    +---------------+---------+------+-------+--------+
    | 10.10.10.3    | 4.2.0.0 | 2881 | zone2 | ACTIVE |
    +---------------+---------+------+-------+--------+
    | 10.10.10.4    | 4.2.0.0 | 2881 | zone3 | ACTIVE |
    +---------------+---------+------+-------+--------+
    obclient -h10.10.10.2 -P2881 -uroot -p'********' -Doceanbase -A
    
    +-------------------------------------------------+
    |                     obproxy-ce                  |
    +---------------+------+-----------------+--------+
    | ip            | port | prometheus_port | status |
    +---------------+------+-----------------+--------+
    | 10.10.10.5    | 2883 | 2884            | active |
    +---------------+------+-----------------+--------+
    obclient -h10.10.10.5 -P2883 -uroot@proxysys -p'********' -Doceanbase -A
    
  3. 复制执行 ob-configserver 下的访问信息

    说明

    访问信息中的 jq 命令的作用是格式化(美化)shell 命令行下 json 的输出,可通过 sudo yum install jq 安装。

    {
      "Code": 200,
      "Message": "successful",
      "Success": true,
      "Data": {
        "ObProxyBinUrl": "http://10.10.10.1:8080/client?Action=GetObProxy",
        "ObProxyDatabaseInfo": {
          "DataBase": "***",
          "MetaDataBase": "http://10.10.10.1:8080/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=admin&ObRegion=obdv1",
          "Password": "***",
          "User": "***"
        },
        "ObRootServiceInfoUrlList": [
          {
            "ObRegion": "obcluster",
            "ObRootServiceInfoUrl": "http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=obcluster"
          }
        ],
        "Version": "4660b4b1f237893ba1da50a302e4c3e6"
      },
      "Trace": "07a7cac129713d00",
      "Server": "10.10.10.1",
      "Cost": 0
    }
    

    输出中 ObRootServiceInfoUrlList 中包含一起部署的 OceanBase 集群(obcluster)的集群信息,表示该集群已成功注册到 obconfigserver 中。您可再次请求 ObRootServiceInfoUrl 验证 obconfigserver 中是否可以解析出 OceanBase 集群的信息,命令如下。

    curl -s 'http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=obcluster' |jq .
    

    输出如下,成功解析出集群中 OBServer 节点的 IP 和端口。

    {
      "Code": 200,
      "Message": "successful",
      "Success": true,
      "Data": {
        "ObClusterId": 1,
        "ObRegionId": 1,
        "ObCluster": "obcluster",
        "ObRegion": "obcluster",
        "ReadonlyRsList": [],
        "RsList": [
          {
            "address": "10.10.10.4:2882",
            "role": "LEADER",
            "sql_port": 2881
          },
          {
            "address": "10.10.10.3:2882",
            "role": "FOLLOWER",
            "sql_port": 2881
          },
          {
            "address": "10.10.10.2:2882",
            "role": "FOLLOWER",
            "sql_port": 2881
          }
        ],
        "Type": "PRIMARY",
        "timestamp": 1694084002271443
      },
      "Trace": "2b2ee036276b068e",
      "Server": "10.10.10.1",
      "Cost": 3
    }
    

使用 obconfigserver

部署 obconfigserver 后,您可通过修改 OceanBase 集群配置文件或执行 SQL 命令将 OceanBase 集群注册到 obconfigserver 中,通过指定 obconfigserver 地址启动的 ODP 可以访问该 obconfigserver 中注册的所有 OceanBase 集群。

本节介绍如何将 OceanBase 数据库注册到 obconfigserver 中,以及如何通过指定 obconfigserver 地址启动 ODP。

注册 OceanBase 集群

本节介绍如何将 OceanBase 集群注册到 obconfigserver 中,有修改 OceanBase 集群配置文件和执行 SQL 命令两种方式。

修改 OceanBase 集群配置项
执行 SQL 命令

注意

  • 待注册的 OceanBase 集群配置文件需配置 appname 配置项,否则配置 config url 后重启会报错。

  • 待注册的 OceanBase 集群需是已启动的集群,目前暂不支持配置待启动集群。

  1. 您可执行 obd cluster edit-config 命令编辑已有集群的配置文件,将 config url 配置到集群中。

    配置项示例如下:

    obconfig_url: 'http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=test1'
    
    • 10.10.10.1:8080:obconfigserver 访问地址,此处仅为示例,您需根据实际情况修改。

    • test1:待注册的 OceanBase 集群的 appname 值,此处以 appname 值为 test1 为例,您需根据实际情况修改。

  2. 执行 obd cluster reload 命令重启集群,此处以部署名为 test1 为例。

    obd cluster reload test1
    
  3. 执行如下命令验证 obconfigserver 中是否注册了该集群的信息。

    curl -s 'http://10.10.10.1:8080/services?Action=GetObProxyConfig' |jq .
    

    输出如下,ObRootServiceInfoUrlList 中包含 test1 集群信息。

    {
      "Code": 200,
      "Message": "successful",
      "Success": true,
      "Data": {
        "ObProxyBinUrl": "http://10.10.10.1:8080/client?Action=GetObProxy",
        "ObProxyDatabaseInfo": {
          "DataBase": "***",
          "MetaDataBase": "http://10.10.10.1:8080/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=admin&ObRegion=obdv1",
          "Password": "***",
          "User": "***"
        },
        "ObRootServiceInfoUrlList": [
          {
            "ObRegion": "obcluster",
            "ObRootServiceInfoUrl": "http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=obcluster"
          },
          {
            "ObRegion": "test1",
            "ObRootServiceInfoUrl": "http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=test1"
          }
        ],
        "Version": "4840ade8a158753aa5b9ea69ba014fc1"
      },
      "Trace": "d4b4b27fae24e7b4",
      "Server": "10.10.10.1",
      "Cost": 1
    }
    
  4. 执行如下命令验证 obconfigserver 中是否可以解析出 OceanBase 集群的信息。

    curl -s 'http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=test1' |jq .
    

    输出如下,成功解析出集群中 OBServer 节点的 IP 和端口。

    {
      "Code": 200,
      "Message": "successful",
      "Success": true,
      "Data": {
        "ObClusterId": 1,
        "ObRegionId": 1,
        "ObCluster": "test1",
        "ObRegion": "test1",
        "ReadonlyRsList": [],
        "RsList": [
          {
            "address": "10.10.10.4:4882",
            "role": "LEADER",
            "sql_port": 4881
          }
        ],
        "Type": "PRIMARY",
        "timestamp": 1692699586370950
      },
      "Trace": "362172a2d5de734c",
      "Server": "10.10.10.1",
      "Cost": 1
    }  
    
  1. 使用 root 用户登录待注册数据库的 sys 租户

    obclient -h<IP> -P<PORT> -uroot@sys -p -c -A
    # example
    obclient -h10.10.10.4 -P4883 -uroot@sys -p -c -A
    

    其中,IP 为连接 OceanBase 数据库的 IP 地址;PORT 为连接 OceanBase 数据库的的端口,直连时为 mysql_port 配置项的值,通过 ODP 连接时为 listen_port 配置项的值。

    使用 OBClient 客户端连接 OceanBase 集群的详细操作可参考 通过 OBClient 连接 OceanBase 租户。

  2. 执行如下命令查看 obconfig_url 参数的值

    obclient> select name,value,svr_ip,svr_port from oceanbase.__all_virtual_sys_parameter_stat where name='obconfig_url';
    

    输出如下,表示当前集群没有配置 config url。

    +--------------+-------+---------------+----------+
    | name         | value | svr_ip        | svr_port |
    +--------------+-------+---------------+----------+
    | obconfig_url |       | 10.10.10.4    |     4882 |
    +--------------+-------+---------------+----------+
    
  3. 执行如下命令配置 obconfig_url

    alter system set obconfig_url = 'http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=test1';
    
  4. 退出集群后验证 obconfigserver 是否可以解析出 OceanBase 集群的信息

    curl -s 'http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=test1' |jq .
    

    输出如下,成功解析出集群中 OBServer 节点的 IP 和端口。

    {
      "Code": 200,
      "Message": "successful",
      "Success": true,
      "Data": {
        "ObClusterId": 1,
        "ObRegionId": 1,
        "ObCluster": "test1",
        "ObRegion": "test1",
        "ReadonlyRsList": [],
        "RsList": [
          {
            "address": "10.10.10.4:4882",
            "role": "LEADER",
            "sql_port": 4881
          }
        ],
        "Type": "PRIMARY",
        "timestamp": 1692699586370950
      },
      "Trace": "362172a2d5de734c",
      "Server": "10.10.10.1",
      "Cost": 1
    }  
    

启动 ODP

您可使用 obd 新部署一个 ODP,并配置 obproxy_config_server_url 启动,配置文件示例如下:

##Only need to configure when remote login is required
user:
  username: admin
#   password: your password if need
  key_file: /home/admin/.ssh/id_rsa
#   port: your ssh port, default 22
#   timeout: ssh connection timeout (second), default 30
obproxy-ce:
  servers:
    - 10.10.10.2
  global:
    listen_port: 2883 # External port. The default value is 2883.
    prometheus_listen_port: 2884 # The Prometheus port. The default value is 2884.
    home_path: /home/admin/obproxy
    obproxy_config_server_url: http://10.10.10.1:8080/services?Action=GetObProxyConfig
    enable_cluster_checkout: false
    # observer cluster name, consistent with oceanbase-ce's appname. When a depends exists, obd gets this value from the oceanbase-ce of the depends.
    skip_proxy_sys_private_check: true
    enable_strict_kernel_release: false
    # obproxy_sys_password: # obproxy sys user password, can be empty. When a depends exists, obd gets this value from the oceanbase-ce of the depends.
    observer_sys_password: ******** # proxyro user password, consistent with oceanbase-ce's proxyro_password, can be empty. When a depends exists, obd gets this value from the oceanbase-ce of the depends.
    obproxy_sys_password: ********

ODP 的详细参数介绍可参见 ODP 参数。

当 ODP 通过 obproxy_config_server_url 配置项启动后,可以使用 ODP 连接注册到 obconfigserver 中的集群。你可以通过如下命令查看 obconfigserver 中注册的 OceanBase 集群信息。

curl -s 'http://10.10.10.1:8080/services?Action=GetObProxyConfig' |jq .

输出如下,从输出中可以看到该 obconfigserver 中已注册 obcluster 和 test1 两个集群,此时通过 ODP 可成功连接这两个集群。

{
  "Code": 200,
  "Message": "successful",
  "Success": true,
  "Data": {
    "ObProxyBinUrl": "http://10.10.10.1:8080/client?Action=GetObProxy",
    "ObProxyDatabaseInfo": {
      "DataBase": "***",
      "MetaDataBase": "http://10.10.10.1:8080/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=admin&ObRegion=obdv1",
      "Password": "***",
      "User": "***"
    },
    "ObRootServiceInfoUrlList": [
      {
        "ObRegion": "obcluster",
        "ObRootServiceInfoUrl": "http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=obcluster"
      }
      {
        "ObRegion": "test1",
        "ObRootServiceInfoUrl": "http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=test1"
      }
    ],
    "Version": "4840ade8a158753aa5b9ea69ba014fc1"
  },
  "Trace": "d4b4b27fae24e7b4",
  "Server": "10.10.10.1",
  "Cost": 1
}

删除集群注册信息

您可通过如下命令删去 obconfigserver 中注册的集群信息,此处以删除 test1 集群信息为例。

curl -X DELETE 'http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=test1&ObClusterId=1&version=2' |jq .

输出如下:

{
  "Code": 200,
  "Message": "successful",
  "Success": true,
  "Data": "success",
  "Trace": "caba1209b3a00c56",
  "Server": "10.10.10.1",
  "Cost": 4
}

再次查看 obconfigserver 中注册的集群信息。

curl -s 'http://10.10.10.1:8080/services?Action=GetObProxyConfig' |jq .

输出如下,可以看到 test1 的集群信息已不存在。

{
  "Code": 200,
  "Message": "successful",
  "Success": true,
  "Data": {
    "ObProxyBinUrl": "http://10.10.10.1:8080/client?Action=GetObProxy",
    "ObProxyDatabaseInfo": {
      "DataBase": "***",
      "MetaDataBase": "http://10.10.10.1:8080/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=admin&ObRegion=obdv1",
      "Password": "***",
      "User": "***"
    },
    "ObRootServiceInfoUrlList": [
      {
        "ObRegion": "obcluster",
        "ObRootServiceInfoUrl": "http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=obcluster"
      }
    ],
    "Version": "4840ade8a158753aa5b9ea69ba014fc1"
  },
  "Trace": "d4b4b27fae24e7b4",
  "Server": "10.10.10.1",
  "Cost": 1
}

常见问题

启动 obconfigserver 时,报错 prepared statement not supported

问题现象

当使用 OceanBase 数据库做 metadb 时,启动 obconfigserver 报错 prepared statement not supported,查看日志如下所示。

2022-11-16T09:52:14.47799+08:00 ERROR [12258,] caller=cmd/main.go:36:func1: start configserver failed: start config server: create configserver schema: sql/schema: reading schema information Error 1235: while parameter _ob_enable_prepared_statement is disabled, prepared statement not supported
[10.10.10.1:2882] [2022-11-16 09:52:14.459102] [YB42AC1EC731-0005EB5F1D83A0A7] fields: args:="[]"

可能原因

在启动 obconfigserver 时,作为元数据库的 OceanBase 数据库未开启 prepared statement 功能。

解决方法

您可通过如下两种方法解决。

  • 方法一:在配置文件里为 obconfigserver 的 connection_url 配置项添加上 interpolateParams=true,示例如下。

    connection_url: "user:password@tcp(IP:PORT)/test?parseTime=true&interpolateParams=true"
    
  • 方法二:连接 OceanBase 集群开启 _ob_enable_prepared_statement 参数。

    • 查询是否开启 _ob_enable_prepared_statement 参数。

      obclient> select name,value,svr_ip,svr_port from oceanbase.__all_virtual_sys_parameter_stat where name='_ob_enable_prepared_statement';
      +-------------------------------+-------+---------------+----------+
      | name                          | value | svr_ip        | svr_port |
      +-------------------------------+-------+---------------+----------+
      | _ob_enable_prepared_statement | False | 10.10.10.1    |     2882 |
      +-------------------------------+-------+---------------+----------+
      1 row in set
      
    • 开启 _ob_enable_prepared_statement 参数。

      obclient> alter system set _ob_enable_prepared_statement='True';
      

通过 ODP 连接 obconfigserver 中注册的集群时报错

问题现象

通过 ODP 连接 obconfigserver 中注册的集群时报错,示例如下。

$ obclient -h10.10.10.2 -P2883 -uroot@sys#cluster -p -Doceanbase -A
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading authorization packet', system error: 11

可能原因

ODP 使用配置的查询 OceanBase 数据库的用户和密码无法访问 OceanBase 集群查询数据。

解决方法

您可通过如下两种方法解决。

  • 方法一:执行 obd cluster edit-config 命令查看配置文件,您需查看 OceanBase 集群配置文件中的 proxyro_password 和 ODP 配置文件中的 observer_sys_password 两个配置项设置是否保持一致。若配置文件中对应配置项不一致,将两者修改统一后根据输出执行对应命令重启,重启后即可通过 ODP 连接该集群。

  • 方法二:查询 OceanBase 数据库中是否存在 proxyro 用户

    • 使用 root 用户登录 OceanBase 数据库的 sys 租户

      obclient -h10.10.10.2 -P2881 -uroot@sys -p -Doceanbase -A
      
    • 查看集群中是否有 proxyro 用户

      select user,password from mysql.user;
      
    • 根据输出结果有如下两种处理方法

      • 结果一:集群中无 proxyro 用户,执行如下命令创建 proxyro 用户,并将密码配置为和 ODP 配置文件中 observer_sys_password 配置项一致

        create user 'proxyro' identified by '*****';
        
      • 结果二:集群中存在 proxyro 用户,执行如下命令修改 proxyro 用户密码,使其与 ODP 配置文件中 observer_sys_password 配置项一致

        alter user 'proxyro' identified by '*****';
        

本文目录

组件介绍部署 obconfigserver步骤一:修改配置文件步骤二:启动 obconfigserver使用 obconfigserver注册 OceanBase 集群启动 ODP删除集群注册信息常见问题启动 obconfigserver 时,报错 prepared statement not supported通过 ODP 连接 obconfigserver 中注册的集群时报错
有帮助
无帮助
反馈
AI

OceanBase

OceanBase 海扬数据库始创于 2010 年,是完全自主研发的数据库公司。2020年开始独立商业化运作,历经15年大规模核心场景验证,目前是中国数据库的领军企业之一。从分布式数据库到 AI 数据库,为企业提供安全、稳定、可扩展的数据底座,推动数据基础设施全面拥抱 AI 时代。

关于我们

关于 OceanBase最新动态资质荣誉客户专家委员会招贤纳士合作伙伴年度发布会开发者大会

资源与服务

支持与服务文档知识库软件与工具下载培训与认证在线体验数据库专题视频

社区

快速上手开发者中心博客活动学习问答GitHub

数据库百科

分布式数据库国产数据库OLTP 数据库OLAP 数据库HTAP 数据库数据库向量数据库向量检索

联系我们

服务热线:
400-109-0633
商务咨询
培训认证技术支持媒体合作
京公网安备11010802047223号京公网安备11010802047223号
京ICP备20024574号-1
合字B1.B2-20250395
网站服务协议隐私协议安全响应协议
OceanBase 版权所有 © 2026 基础资源和备案服务由阿里云提供