首批通过分布式安全可靠测评,为关键业务系统打造
角色切换与解耦
更新时间:2026-07-09 15:25:37
本文介绍如何使用 obd 动态改变 seekdb 实例角色,以及如何对主备实例解耦。
概念介绍
主备库是 seekdb 提供的高可用方案。主实例(PRIMARY)是用户创建的业务实例,支持完整的数据库服务能力,包括:查询、DML、DDL 等;备实列(STANDBY)则仅提供容灾和只读服务的能力。
obd 支持通过命令动态改变实例角色。
Switchover
Switchover 操作是在用户计划内对实例角色进行变更。执行 Switchover 操作后,主实例会与对应的备实例会交换实例角色,整个过程数据不丢失,RPO = 0,执行时间一般为秒级。
Failover
Failover 操作通常是在主实例出现无法恢复的故障时所做的切换行为。执行 Failover 操作后,对应的备实例角色会变换成 PRIMARY。同时,如果对主实例故障前一直正常同步的备实例执行 Failover 操作,则执行 Failover 操作后,一般会产生百毫秒级别的数据损失,执行时间一般为秒级。
Decouple
Decouple 操作是在用户计划内对实例角色进行变更,执行 Decouple 操作后,对应的备实例会和主实例解耦,备实例角色会变换为 PRIMARY。
Switchover
执行 Switchover 操作后,为保证拓扑关系不变,原主实例下的其他备实例将切换到新主实例下,新主实例下的其他备实例将切换到新备实例下,即仅交换 Switchover 操作的两个主备节点,其他节点的位置保持不变,如下图所示。

前提条件
seekdb 需为 V1.2.0 或以上版本。
主备实例均由 obd 管理,且为在线状态,可执行
obd seekdb display命令查看实例状态。
操作步骤
查看 seekdb 实例的主备关系
执行如下命令查看 seekdb 实例的主备关系,此处以查看
seekdb_B实例为例。obd seekdb display seekdb_B -g-g参数可以展示主备实例拓扑信息,输出如下所示:Get local repositories and plugins ok Open ssh connection ok Connect to seekdb 10.10.10.1:2881 ok Wait for seekdb init ok +--------------------------------+ | seekdb | +---------------+---------+------+ | ip | version | port | +---------------+---------+------+ | 10.10.10.1 | 1.2.0.0 | 2881 | +---------------+---------+------+ obclient -h10.10.10.1 -P2881 -uroot -p'********' -Doceanbase -A Cluster Topology: seekdb_A └── seekdb_B └── seekdb_C为备实例执行 Switchover 命令
obd seekdb switchover seekdb_B再次查看原备实例的主备关系
obd seekdb display seekdb_B -g-g参数可以展示主备实例拓扑信息,输出如下所示,主备关系拓扑图已更新。Get local repositories and plugins ok Open ssh connection ok Connect to seekdb 10.10.10.1:2881 ok Wait for seekdb init ok +--------------------------------+ | seekdb | +---------------+---------+------+ | ip | version | port | +---------------+---------+------+ | 10.10.10.1 | 1.2.0.0 | 2881 | +---------------+---------+------+ obclient -h10.10.10.1 -P2881 -uroot -p'********' -Doceanbase -A Cluster Topology: seekdb_B └── seekdb_A └── seekdb_C
Failover
Failover 操作适用于当前主实例不可用时,可以将备实例切换为主实例继续提供服务。Failover 操作只会对日志文件做修改,不会对数据文件做修改。
注意
在一主多备场景中,通过执行 Failover 操作将一个备实例切换为主实例后,其他的备实例无法切换到新主实例下,您需自行选择解耦或对其他备实例执行 Failover 操作生成新的主实例。
前提条件
seekdb 需为 V1.2.0 或以上版本。
主备实例均由 obd 管理。
主实例为不可用状态,可执行
obd seekdb display命令查看实例状态。备实例为在线状态,可执行
obd seekdb display命令查看实例状态。
操作步骤
查看 seekdb 实例的主备关系
执行如下命令查看 seekdb 实例的主备关系,此处以查看
seekdb_B实例为例。obd seekdb display seekdb_B -g-g参数可以展示主备实例拓扑信息,输出如下所示:Get local repositories and plugins ok Open ssh connection ok Connect to seekdb 10.10.10.1:2881 ok Wait for seekdb init ok +--------------------------------+ | seekdb | +---------------+---------+------+ | ip | version | port | +---------------+---------+------+ | 10.10.10.1 | 1.2.0.0 | 2881 | +---------------+---------+------+ obclient -h10.10.10.1 -P2881 -uroot -p'********' -Doceanbase -A Cluster Topology: seekdb_A └── seekdb_B └── seekdb_C为备实例执行 Failover 命令
obd seekdb failover seekdb_B再次查看原备实例的主备关系
obd seekdb display seekdb_B -g-g参数可以展示主备实例拓扑信息,输出如下所示:Get local repositories and plugins ok Open ssh connection ok Connect to seekdb 10.10.10.1:2881 ok Wait for seekdb init ok +--------------------------------+ | seekdb | +---------------+---------+------+ | ip | version | port | +---------------+---------+------+ | 10.10.10.1 | 1.2.0.0 | 2881 | +---------------+---------+------+ obclient -h10.10.10.1 -P2881 -uroot -p'********' -Doceanbase -A Cluster Topology: seekdb_B └── seekdb_C
主备实例解耦
您可执行 decouple 命令将备实例解耦为一个和主实例无关的实例,本节介绍如何执行 decouple 命令进行主备实例解耦。
前提条件
seekdb 需为 V1.2.0 或以上版本。
主备实例均由 obd 管理,且为在线状态,可执行
obd seekdb display命令查看实例状态。
操作步骤
查看 seekdb 实例的主备关系
执行如下命令查看 seekdb 实例的主备关系,此处以查看
seekdb_B实例为例。obd seekdb display seekdb_B -g-g参数可以展示主备实例拓扑信息,输出如下所示:Get local repositories and plugins ok Open ssh connection ok Connect to seekdb 10.10.10.1:2881 ok Wait for seekdb init ok +--------------------------------+ | seekdb | +---------------+---------+------+ | ip | version | port | +---------------+---------+------+ | 10.10.10.1 | 1.2.0.0 | 2881 | +---------------+---------+------+ obclient -h10.10.10.1 -P2881 -uroot -p'********' -Doceanbase -A Cluster Topology: seekdb_A └── seekdb_B └── seekdb_C为备实例执行解耦命令
obd seekdb decouple seekdb_B再次查看原备实例的主备关系
obd seekdb display seekdb_B -g-g参数可以展示主备实例拓扑信息,输出如下所示:Get local repositories and plugins ok Open ssh connection ok Connect to seekdb 10.10.10.1:2881 ok Wait for seekdb init ok +--------------------------------+ | seekdb | +---------------+---------+------+ | ip | version | port | +---------------+---------+------+ | 10.10.10.1 | 1.2.0.0 | 2881 | +---------------+---------+------+ obclient -h10.10.10.1 -P2881 -uroot -p'********' -Doceanbase -A Cluster Topology: seekdb_B └── seekdb_C