首批通过分布式安全可靠测评,为关键业务系统打造
部署 obconfigserver
更新时间:2025-10-18 20:08:12
部署 obconfigserver 时,您可以选择单独部署,也可以和 OceanBase 数据库以及 ODP 一起部署,本文将介绍 obconfigserver 常见的几种部署方法。
组件介绍
oceanbase-ce
OceanBase 数据库社区版,OceanBase 数据库一款完全自研的企业级原生分布式数据库,详细信息请参见 OceanBase 数据库文档。
obproxy-ce
OceanBase Database Proxy,OceanBase 数据库代理,是 OceanBase 数据库专用的代理服务器,简称为 ODP(又称为 OBProxy)。详细信息请参见 OceanBase 数据库代理文档。
ob-configserver
OceanBase Configserver,简称为 obconfigserver,可提供 OceanBase 的元数据注册,存储和查询服务。详细信息请参见 ob-configserver。
前提条件
在开始之前,请确保您已满足以下条件:
直接部署 obconfigserver 要求您已安装 V2.3.0 或之后版本的 obd,为集群新增 obconfigserver 要求您已安装 V2.5.0 或之后版本的 obd,建议安装最新版本。安装 obd 的详细操作您可参见 安装 obd。
说明
建议通过下载 OceanBase All in One 进行安装,OceanBase All in One 目前提供部署所需要的全部组件(除 obbinlog 组件),且组件已经经过相互适配测试,为官方推荐版本。
您的机器可以联网,或者 obd 本地镜像库中有部署所需安装包。
可执行
obd mirror list local命令查看本地镜像库中的安装包。若您通过 OceanBase All in One 安装 obd,本地镜像库中默认包含所有部署所需组件的安装包。同时部署 OceanBase 集群时,需确保 OBServer 节点机器支持 AVX 指令集(仅 x86 架构服务器有此限制)。可执行
lscpu | grep Flags | grep avx命令查看是否支持 AVX 指令集。说明
当使用 x86 架构机器时,若待部署的 OceanBase 数据库版本在以下范围中,不再限制机器是否支持 AVX 指令集:
- 对于 V4.2.x 版本,要求为 V4.2.5.6 或之后版本。
- 对于 V4.3.x 版本,要求为 V4.3.5.4 或之后版本。
- 对于 V4.4.x 版本,要求为 V4.4.1.0 或之后版本。
离线部署场景下,若同时部署 OceanBase 集群,且使用 ARM 架构服务器部署,需查看 OBServer 节点机器是否支持 LSE 指令集,可执行
lscpu | grep Flags | grep atomics命令查看是否支持。若机器不支持 LSE 指令集,需下载带nonlse的 OceanBase 数据库安装包,并使用obd mirror clone命令将安装包上传到 obd 本地镜像库。说明
OceanBase All in One 包中未包含带有
nonlse的 OceanBase 数据库安装包。
操作步骤
本节分为如下三种场景介绍如何使用 obd 命令部署 obconfigserver,您可根据实际情况选择合适的部署方式:
同时部署 OceanBase 数据库和 ODP
在同一份配置文件中同时配置 obconfigserver、OceanBase 数据库和 ODP,部署成功后一同部署的 OceanBase 数据库会被注册到 obconfigserver 中,并且 ODP 也是使用 config url 方式启动,也就是说可以通过该 ODP 连接任何被注册到当前 obconfigserver 中的集群。
注意
使用 ODP 连接 OceanBase 数据库时,需保证 ODP 中的配置项
observer_sys_password与 OceanBase 数据库中 proxyro@sys 用户密码一致,否则连接会报错。为集群新增 obconfigserver
使用
obd cluster component add命令向 obd 管理的 OceanBase 集群中新增 obconfigserver,若已存在的 OceanBase 集群中有部署 ODP,执行成功并重启 ODP 后,ODP 将使用新增 obconfigserver 的 config url 启动。仅部署 obconfigserver
部署成功后,需手动将 OceanBase 集群注册到该 obconfigserver 中,并修改 ODP 的
obproxy_config_server_url配置项,具体操作可参见下文 使用 obconfigserver 介绍。
步骤一:修改配置文件
创建一个配置文件,此处以配置文件名为 config.yaml 为例,该配置文件中各个组件的配置及注意事项如下所示。
用户配置
## 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 30username为登录到目标机器的用户名,确保您的用户名有home_path的写权限。password和key_file均用于验证用户,通常情况下只需要填写一个。注意
在配置秘钥路径后,如果您的秘钥不需要口令,请注释或者删除
password,以免password被视为秘钥口令用于登录,导致校验失败。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 enable_auto_start: true 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. obshell_port: 2886 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: test 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.2.5,配置文件中未配置
scenario时,obd 会提供交互式选项供用户选择负载类型。配置
enable_auto_start为true即表示开启 observer 进程开机自启动功能,该功能需确保部署用户拥有 sudo 权限,且部署环境非容器环境。
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 中注册的集群信息。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
部署 obconfigserver
[admin@obtest ~]$ obd cluster deploy test -c config.yaml此处以使用配置文件
config.yaml部署test集群为例,您需根据实际情况修改部署集群名和配置文件名。启动 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' Wait for observer init ok +-------------------------------------------------+ | oceanbase-ce | +---------------+---------+------+-------+--------+ | ip | version | port | zone | status | +---------------+---------+------+-------+--------+ | 10.10.10.2 | 4.3.5.0 | 2881 | zone1 | ACTIVE | +---------------+---------+------+-------+--------+ | 10.10.10.3 | 4.3.5.0 | 2881 | zone2 | ACTIVE | +---------------+---------+------+-------+--------+ | 10.10.10.4 | 4.3.5.0 | 2881 | zone3 | ACTIVE | +---------------+---------+------+-------+--------+ obclient -h10.10.10.2 -P2881 -uroot -p'********' -Doceanbase -A +----------------------------------------------------------------+ | obproxy-ce | +------------+------+-----------------+-----------------+--------+ | ip | port | prometheus_port | rpc_listen_port | status | +------------+------+-----------------+-----------------+--------+ | 10.10.10.5 | 2883 | 2884 | 2885 | active | +------------+------+-----------------+-----------------+--------+ obclient -h10.10.10.5 -P2883 -uroot@proxysys -p'********' -Doceanbase -A obshell program health check ok display ob-dashboard ok +-----------------------------------------------------------+ | ob-dashboard | +---------------------------+------+---------------+--------+ | url | user | password | status | +---------------------------+------+---------------+--------+ | http://10.10.10.2:2886 | root | '********' | active | +---------------------------+------+---------------+--------+
创建配置文件
为 obd 管理的 OceanBase 集群新增 obconfigserver 时,新创建的配置文件中只需要配置 ob-configserver 组件的信息,示例如下:
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 库,否则会提示没有权限。
执行新增组件命令
obd cluster component add test1 -c configserver.yaml此处以已存在的 OceanBase 集群名为
test1(执行obd cluster list命令输出的Name),新增 obconfigserver 时创建的配置文件名为configserver.yaml为例,您需根据实际集群名和组件名进行替换。命令执行后输出如下:
Connect to ob-configserver ok +-----------------------------------------------------------------+ | ob-configserver | +---------------+------+---------------+----------+--------+------+ | server | port | vip_address | vip_port | status | pid | +---------------+------+---------------+----------+--------+------+ | 10.10.10.1 | 8080 | 10.10.10.1 | 8080 | active | 2725 | +---------------+------+---------------+----------+--------+------+ curl -s 'http://10.10.10.1:8080/services?Action=GetObProxyConfig'当待新增组件的集群中存在 ODP 时,根据 obd 版本的不同有如下两种情况:
obd 为 V3.2.0 或之后版本时,支持交互式控制是否重启集群,只需在输出中的如下位置输入
restart即可使用新增的 obconfigserver 重启 ODP。Restart `obproxy-ce,oceanbase-ce` for test to take effect. You can do it manually later or enter `restart` now:如果此处直接按 Enter 回车,或输入非 restart 值,obd 不会重启集群,流程结束后 ODP 仍是使用 rslist 方式启动。
obd 为 V3.2.0 之前版本时,会在输出中输出重启命令,您只需复制并执行输出中的
obd cluster restart命令。执行命令后,将使用新增的 obconfigserver 重启 ODP。obd cluster restart demo -c obproxy-ce
创建一个配置文件,此处以配置文件名为 config-only.yaml 为例,该配置文件中各个组件的配置及注意事项如下所示。
用户配置
## 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 30username为登录到目标机器的用户名,确保您的用户名有home_path的写权限。password和key_file均用于验证用户,通常情况下只需要填写一个。注意
在配置秘钥路径后,如果您的秘钥不需要口令,请注释或者删除
password,以免password被视为秘钥口令用于登录,导致校验失败。配置 ob-configserver 组件
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 库,否则会提示没有权限。
部署 obconfigsever
[admin@obtest ~]$ obd cluster deploy config-only -c config-only.yaml此处以使用配置文件
config-only.yaml部署config-only集群为例,您需根据实际情况修改部署集群名和配置文件名。启动 obconfigserver
[admin@obtest ~]$ obd cluster start config-only输出如下,可以看到 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'
使用 obconfigserver
本节介绍部署 obconfigserver 后如何使用,具体包含如何向 obconfigserver 中注册 OceanBase 集群、如何查看注册信息、如何启动 ODP,以及如何删除被注册到 obconfigserve 中的集群。
注册 OceanBase 集群
本节介绍如何将 OceanBase 集群注册到 obconfigserver 中。有修改 OceanBase 集群配置文件和执行 SQL 命令两种方式,您可根据实际需要选择任一方式进行操作。
注意
待注册的 OceanBase 集群配置文件需配置
appname配置项,否则配置obconfig_url后重启会报错。待注册的 OceanBase 集群需是已启动的集群,目前暂不支持配置待启动集群。
您可执行
obd cluster edit-config命令编辑已有集群的配置文件,将obconfig_url配置到 oceanbase-ce 组件的global模块下。配置项示例如下:
obconfig_url: 'http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=test1'10.10.10.1:8080:obconfigserver 访问地址,此处仅为示例,您需根据实际情况修改。test1:待注册的 OceanBase 集群的appname值,此处以appname值为test1为例,您需根据实际情况修改。
执行
obd cluster reload命令重启集群,此处以部署名为test1为例。obd cluster reload test1重启成功后可参照下文 查看 obconfigserver 中注册信息 内容验证该集群是否成功注册到 obconfigserver 中。
使用 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 租户。
执行如下命令查看
obconfig_url配置项的值obclient> SHOW PARAMETERS LIKE 'obconfig_url';输出如下,表示当前集群没有配置
obconfig_url。+-------+----------+---------------+----------+--------------+-----------+-------+--------------------------+----------+---------+---------+-------------------+---------------+-----------+ | zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | default_value | isdefault | +-------+----------+---------------+----------+--------------+-----------+-------+--------------------------+----------+---------+---------+-------------------+---------------+-----------+ | zone3 | observer | 10.10.10.4 | 2882 | obconfig_url | STRING | | URL for OBConfig service | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | | 1 | | zone1 | observer | 10.10.10.2 | 2882 | obconfig_url | STRING | | URL for OBConfig service | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | | 1 | | zone2 | observer | 10.10.10.3 | 2882 | obconfig_url | STRING | | URL for OBConfig service | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | | 1 | +-------+----------+---------------+----------+--------------+-----------+-------+--------------------------+----------+---------+---------+-------------------+---------------+-----------+执行如下命令配置
obconfig_urlalter system set obconfig_url = 'http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=test1';10.10.10.1:8080为 obconfigserver 访问地址,test1为待注册的 OceanBase 集群的appname值,可连接集群后执行SHOW PARAMETERS LIKE 'cluster';命令查看,此处仅为示例,您需根据实际情况修改。退出集群后验证 obconfigserver 是否可以解析出 OceanBase 集群的信息
curl -s 'http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=test1' |jq .说明
将 OceanBase 集群注册到 obconfigserver 后,需等待几分钟后,obconfigserver 中才能查到相关信息。
输出如下,成功解析出集群中 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
}
查看 obconfigserver 中注册信息
查看集群详细信息
obd cluster display test此处以 obconfigserver 所在集群部署名为
test为例,您可执行obd cluster list命令查看实际部署名(Name列对应值),并进行替换。输出如下:
Connect to ob-configserver ok +-------------------------------------------------------------------+ | ob-configserver | +---------------+-------+---------------+----------+--------+-------+ | server | port | vip_address | vip_port | status | pid | +---------------+-------+---------------+----------+--------+-------+ | 10.10.10.1 | 8080 | 10.10.10.1 | 8080 | active | 13616 | +---------------+-------+---------------+----------+--------+-------+ curl -s 'http://10.10.10.1:8080/services?Action=GetObProxyConfig' Connect to observer 10.10.10.1:2881 ok Wait for observer init ok +-------------------------------------------------+ | oceanbase-ce | +---------------+---------+------+-------+--------+ | ip | version | port | zone | status | +---------------+---------+------+-------+--------+ | 10.10.10.2 | 4.3.5.0 | 2881 | zone1 | ACTIVE | | 10.10.10.3 | 4.3.5.0 | 2881 | zone2 | ACTIVE | | 10.10.10.4 | 4.3.5.0 | 2881 | zone3 | ACTIVE | +---------------+---------+------+-------+--------+ obclient -h10.10.10.1 -P2881 -uroot -p'********' -Doceanbase -A cluster unique id: 253244ab-94b9-5def-9cbd-7a46e6c19621-1953714c460-00050304 Connect to obproxy ok +-------------------------------------------------------------------+ | obproxy-ce | +---------------+------+-----------------+-----------------+--------+ | ip | port | prometheus_port | rpc_listen_port | status | +---------------+------+-----------------+-----------------+--------+ | 10.10.10.5 | 2883 | 2884 | 2885 | active | +---------------+------+-----------------+-----------------+--------+ obclient -h10.10.10.1 -P2883 -uroot@proxysys -p'********' -Doceanbase -A obshell program health check ok display ob-dashboard ok +-----------------------------------------------------------+ | ob-dashboard | +---------------------------+------+---------------+--------+ | url | user | password | status | +---------------------------+------+---------------+--------+ | http://10.10.10.2:2886 | root | '********' | active | +---------------------------+------+---------------+--------+ Trace ID: ea4340b6-f35a-11ef-a019-00163e4cf51e查看 obconfigserve 中注册的集群
复制执行 ob-configserver 组件下的访问信息即可查看 obconfigserver 中注册的 OceanBase 集群。您可使用 jq 命令格式化(美化)shell 命令行下 json 的输出,jq 命令可通过
sudo yum install jq安装。curl -s 'http://10.10.10.1:8080/services?Action=GetObProxyConfig' | jq .输出如下,
ObRootServiceInfoUrlList中包含集群名为 test 的 OceanBase 集群的信息,表示该集群已被注册到 obconfigserver 中:{ "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": "test", "ObRootServiceInfoUrl": "http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=test" } ], "Version": "4660b4b1f237893ba1da50a302e4c3e6" }, "Trace": "07a7cac129713d00", "Server": "10.10.10.1", "Cost": 0 }查看对应 OceanBase 集群的详细信息
再次请求命令输出中的
ObRootServiceInfoUrl内容,可查看对应 OceanBase 集群的详细信息,示例如下:curl -s 'http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=test' | jq .输出如下,成功解析出集群中 OBServer 节点的 IP 和端口。
{ "Code": 200, "Message": "successful", "Success": true, "Data": { "ObClusterId": 1, "ObRegionId": 1, "ObCluster": "test", "ObRegion": "test", "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 }
启动 ODP
ODP 有两种启动方式:配置 rs_list 启动、配置 obproxy_config_server_url 启动。配置 rs_list 启动时,ODP 仅可连接 rs_list 中配置的一个 OceanBase 集群;配置 obproxy_config_server_url 启动时,ODP 可连接对应 obconfigserver 中注册的所有 OceanBase 集群。
如需使用 obconfigserver 启动 ODP,可执行 obd cluster edit-config 命令打开配置文件,直接在配置文件中 obproxy-ce 组件的 global 模块下添加如下内容即可:
obproxy_config_server_url: http://10.10.10.1:8080/services?Action=GetObProxyConfig
示例中的 10.10.10.1:8080 为 obconfigserver 访问地址,您需根据实际情况进行修改。
删除集群注册信息
您可通过如下命令删去 obconfigserver 中注册的集群信息,此处以删除 test1 集群信息为例。
curl -X DELETE 'http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=test1&ObClusterId=1&version=2' |jq .
示例中的 10.10.10.1:8080 为 obconfigserver 访问地址,可执行 obd cluster display 命令获取;test1 可查看待删除集群的配置文件中的 appname 值,也可连接集群后执行 SHOW PARAMETERS LIKE 'cluster'; 命令查看;ObClusterId 可查看待删除集群的配置文件中的 cluster_id 值,或参照上文 查看 obconfigserver 中注册信息 内容从集群详细信息中获取。
输出如下:
{
"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": "test",
"ObRootServiceInfoUrl": "http://10.10.10.1:8080/services?Action=ObRootServiceInfo&ObCluster=test"
}
],
"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 '*****';