基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
通过命令行执行 Switchover 流程
更新时间:2023-07-19 13:03:06
本节主要介绍如何通过命令行方式执行 Switchover 流程,进行主备库切换。
Switchover 的流程为先将主集群切换为备集群,再将备集群切换为主集群。
切换前准备
进行角色切换前,需要先获取集群信息以及选择合适的备集群。
详细的操作,参见 切换前准备。
主集群切换为备集群
注意
验证主集群是否能够切换为备集群角色,以下查询操作均须先切换到 oceanbase 库中进行。
在主集群上查询
V$OB_CLUSTER视图的SWITCHOVER_STATUS和SWITCHOVER_INFO字段。示例如下:
obclient> SELECT SWITCHOVER_STATUS, SWITCHOVER_INFO FROM V$OB_CLUSTER; +-------------------+------------------------------+ | SWITCHOVER_STATUS | SWITCHOVER_INFO | +-------------------+------------------------------+ | TO STANDBY | SYNCED STANDBY CLUSTERS: 2,3 | +-------------------+------------------------------+ 1 row in set其中:
SWITCHOVER_STATUS展示了当前的切换状态,TO STANDBY表示可以切换为备集群。如果为NOT ALLOWED或其他值,则说明当前不满足切换条件。在
TO STANDBY状态下,SWITCHOVER_INFO字段展示了当前可以切换为主集群的备集群列表,例如:SYNCED STANDBY CLUSTERS: 2,3表示CLUSTER_ID为2和3的备集群均可以切换为主集群。在
NOT ALLOWED状态下,SWITCHOVER_INFO字段展示了不允许切换的原因,例如:CHECK PRIMARY CLUSTER SERVER STATUS表示需要检查主集群的 Server 状态。OceanBase 数据库要求所有 Server 都在线才能执行 Switchover,如果有部分 Server 不在线,则不允许切换。更多
SWITCHOVER_INFO字段取值对应的问题排查,请参见 Switchover 相关的问题。
在主集群上执行以下命令,将角色切换为
PHYSICAL STANDBY。obclient> ALTER SYSTEM COMMIT TO SWITCHOVER TO PHYSICAL STANDBY; Query OK, 0 rows affected命令执行完成后,主集群会切换为备集群角色,执行以下命令,可以看到
SWITCHOVER_STATUS变为SWTICHOVER SWITCHING。obclient> SELECT CLUSTER_ID, CLUSTER_ROLE, SWITCHOVER_STATUS FROM V$OB_CLUSTER; +------------+------------------+----------------------+ | CLUSTER_ID | CLUSTER_ROLE | SWITCHOVER_STATUS | +------------+------------------+----------------------+ | 1 | PHYSICAL STANDBY | SWITCHOVER SWITCHING | +------------+------------------+----------------------+ 1 row in set
备集群切换为主集群
在目标备集群上执行以下命令,验证是否可以切换为主集群。
obclient> SELECT SWITCHOVER_STATUS, SWITCHOVER_INFO FROM V$OB_CLUSTER; +-------------------+-----------------+ | SWITCHOVER_STATUS | SWITCHOVER_INFO | +-------------------+-----------------+ | TO PRIMARY | | +-------------------+-----------------+ 1 row in setSWITCHOVER_STATUS字段为TO PRIMARY表示可以切换为主集群;如果值为NOT ALLOWED,则表示本备集群不允许切换为主集群,SWITCHOVER_INFO字段会展示相应的原因。如果没有备集群允许切换为主集群,则可以在原主集群上执行以下命令,将切换操作回滚,切换回主集群角色。
obclient> ALTER SYSTEM COMMIT TO SWITCHOVER TO PRIMARY; Query OK, 0 rows affected如果满足切换条件,则在目标备集群上执行以下命令,切换为主集群。
obclient> ALTER SYSTEM COMMIT TO SWITCHOVER TO PRIMARY; Query OK, 0 rows affected命令执行成功后,备集群切换为主集群角色,您可以执行以下命令,查询
V$OB_CLUSTER视图,确认是否切换成功。obclient> SELECT CLUSTER_ID, CLUSTER_ROLE, SWITCHOVER_STATUS, SWITCHOVER_INFO FROM V$OB_CLUSTER; +------------+--------------+-------------------+------------------------------+ | CLUSTER_ID | CLUSTER_ROLE | SWITCHOVER_STATUS |SWITCHOVER_INFO | +------------+--------------+-------------------+------------------------------+ | 2 | PRIMARY | TO STANDBY | SYNCED STANDBY CLUSTERS: 1,3 | +------------+--------------+-------------------+------------------------------+ 1 row in set