首批通过分布式安全可靠测评,为关键业务系统打造
为集群替换仲裁服务
更新时间:2026-06-21 08:40:36
功能适用性
该内容仅适用于 OceanBase 数据库企业版。OceanBase 数据库社区版暂不支持仲裁服务功能。
当仲裁服务所在的机器故障时,可以在新的机器上部署仲裁服务后为集群替换故障的仲裁服务。
前提条件
请确认待替换仲裁服务的新机器上已安装 OceanBase 数据库软件并已启动仲裁服务,详细操作可参见 部署两副本加仲裁服务的 OceanBase 集群。
操作步骤
使用
root用户登录到集群的sys租户。连接示例如下,连接数据库时请以实际环境为准。
obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -A有关更加详细的连接数据库的操作指引,参见 连接数据库概述(MySQL 模式) 和 连接数据库概述(Oracle 模式)。
执行以下命令,获取集群当前的仲裁服务地址。
obclient(root@sys)[(none)]> SELECT * FROM oceanbase.DBA_OB_ARBITRATION_SERVICE;查询结果中的
ARBITRATION_SERVICE列即展示了集群当前的仲裁服务地址。执行以下命令,为集群替换仲裁服务。
ALTER SYSTEM REPLACE ARBITRATION SERVICE 'curr_arb_server_ip:curr_arb_server_port' WITH 'new_arb_server_ip:new_arb_server_port';相关参数说明如下:
curr_arb_server_ip:curr_arb_server_port:表示当前故障的仲裁服务的 IP 和 RPC 端口,端口号默认为 2882。new_arb_server_ip:new_arb_server_port:表示新的仲裁服务的 IP 和 RPC 端口,端口号默认为 2882。
示例如下:
obclient(root@sys)[(none)]> ALTER SYSTEM REPLACE ARBITRATION SERVICE 'xx.xx.xx.64:2882' WITH 'xx.xx.xx.192:2882';替换命令执行后,如果出现了超时的情况,可以查询
DBA_OB_ARBITRATION_SERVICE视图确认仲裁服务的替换状态。obclient(root@sys)[(none)]> SELECT * FROM oceanbase.DBA_OB_ARBITRATION_SERVICE;查询结果的示例如下:
+---------------------+---------------------+-------------------------+---------------------+------------------------------+------+ | CREATE_TIME | MODIFY_TIME | ARBITRATION_SERVICE_KEY | ARBITRATION_SERVICE | PREVIOUS_ARBITRATION_SERVICE | TYPE | +---------------------+---------------------+-------------------------+---------------------+------------------------------+------+ | 2023-06-26 19:30:19 | 2023-06-30 09:42:40 | default | xx.xx.xx.192:2882 | | ADDR | +---------------------+---------------------+-------------------------+---------------------+------------------------------+------+ 1 row in set根据查询结果,如果
PREVIOUS_ARBITRATION_SERVICE列的值为非空,则表示后台变更流程还未完成,需要等待变更流程结束。如果PREVIOUS_ARBITRATION_SERVICE列的值为空,则表示后台变更流程已完成,仲裁服务实际已替换成功。有关
DBA_OB_ARBITRATION_SERVICE视图的更多介绍,请参见 DBA_OB_ARBITRATION_SERVICE。替换命令执行成功后,如果原仲裁服务在替换前为正常状态,则系统会自动清理原仲裁 Server 上残留的集群信息;如果原仲裁服务在替换前为故障状态,则系统会有一个 Warning 信息,提示您仲裁服务替换成功后,原仲裁 Server 上还残留了该集群的相关信息,需要您选择是否通过 ob_admin 工具手动清理残留信息,清理残留的集群信息的详细操作,请参见 清理残留的集群信息。
查看 Warning 信息的语句如下。
obclient(root@sys)[(none)]> SHOW WARNINGS;Warning 信息如下。
+---------+------+---------------------------------------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------------------------------------------------------------------------------------+ | Warning | 4757 | Cluster info may remain on arbitration server 'xx.xx.xx.64:2882', please make sure whether to use ob_admin to clean it. | +---------+------+---------------------------------------------------------------------------------------------------------------------------+ 1 row in set(可选)仲裁服务替换成功后,可以在
DBA_OB_ROOTSERVICE_EVENT_HISTORY视图中通过查询指定module的方式来查看仲裁服务的替换历史。语句如下:
obclient(root@sys)[(none)]> SELECT * FROM oceanbase.DBA_OB_ROOTSERVICE_EVENT_HISTORY WHERE module LIKE "%arb_service%";查询结果的示例如下:
+----------------------------+-------------+-----------------------------------+-------+--------+-------+--------------------------------------------------------------------------------------------------+-------+--------+-------+--------+-------+--------+-------+--------+------------+----------------+-------------+ | TIMESTAMP | MODULE | EVENT | NAME1 | VALUE1 | NAME2 | VALUE2 | NAME3 | VALUE3 | NAME4 | VALUE4 | NAME5 | VALUE5 | NAME6 | VALUE6 | EXTRA_INFO | RS_SVR_IP | RS_SVR_PORT | +----------------------------+-------------+-----------------------------------+-------+--------+-------+--------------------------------------------------------------------------------------------------+-------+--------+-------+--------+-------+--------+-------+--------+------------+----------------+-------------+ | 2023-06-26 19:30:19.245664 | arb_service | admin_add_arbitration_service | ret | 0 | arg | {arbitration_service_:"xx.xx.xx.192:2882"} | | | | | | | | | | xx.xx.xx.194 | 2882 | | 2023-06-30 09:42:35.623655 | arb_service | admin_replace_arbitration_service | ret | 0 | arg | {arbitration_service_:"xx.xx.xx.64:2882", previous_arbitration_service_:"xx.xx.xx.192:2882"} | | | | | | | | | | xx.xx.xx.194 | 2882 | +----------------------------+-------------+-----------------------------------+-------+--------+-------+--------------------------------------------------------------------------------------------------+-------+--------+-------+--------+-------+--------+-------+--------+------------+----------------+-------------+ 2 rows in set
相关文档
更多仲裁服务相关的信息,请参见以下内容: