基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
切换前准备
更新时间:2024-04-07 14:30:34
本节主要介绍角色切换前的准备操作,包括获取集群信息、选择切换方式以及选择待切换的备集群。
获取集群信息
查询 V$OB_CLUSTER 视图,获取各个集群的角色、状态、保护模式和保护级别。
操作示例如下:
使用
root用户登录到数据库的sys租户。进入
oceanbase数据库。obclient> USE oceanbase;执行以下命令,获取当前集群的角色和状态。
obclient> SELECT CLUSTER_ID, CLUSTER_NAME, CLUSTER_ROLE, CLUSTER_STATUS FROM V$OB_CLUSTER; +------------+--------------+--------------+----------------+ | CLUSTER_ID | CLUSTER_NAME | CLUSTER_ROLE | CLUSTER_STATUS | +------------+--------------+--------------+----------------+ | 1 | obcluster | PRIMARY | VALID | +------------+--------------+--------------+----------------+ 1 row in set其中:
CLUSTER_ID字段是本集群的集群 ID,主备集群的 ID 不同。CLUSTER_NAME字段展示了本集群的集群名,主备集群的集群名相同。CLUSTER_ROLE展示了本集群的角色,PRIMARY表示主集群;PHYSICAL STANDBY表示备集群。CLUSTER_STATUS展示了本集群的状态,VALID表示是正常状态;DISABLED表示禁止同步状态,只有VALID状态的主集群和备集群才能执行角色切换。
确认主集群后,您可以在主集群上查询
V$OB_STANDBY_STATUS视图,获取所有备集群列表及状态。例如,示例中存在两个备集群,
CLUSTER_ID分别为2和3,均处于VALID状态。obclient> SELECT CLUSTER_ID, CLUSTER_NAME, CLUSTER_ROLE, CLUSTER_STATUS FROM V$OB_STANDBY_STATUS; +------------+--------------+------------------+----------------+ | CLUSTER_ID | CLUSTER_NAME | CLUSTER_ROLE | CLUSTER_STATUS | +------------+--------------+------------------+----------------+ | 2 | obcluster | PHYSICAL STANDBY | VALID | | 3 | obcluster | PHYSICAL STANDBY | VALID | +------------+--------------+------------------+----------------+ 2 rows in set执行以下命令,获取当前集群的保护模式和保护级别。
obclient> SELECT PROTECTION_MODE, PROTECTION_LEVEL FROM V$OB_CLUSTER;
选择切换方式
角色切换操作主要包括以下两种:
Switchover
在主集群可用的情况下,允许主集群与其中一个备集群交换角色,保证数据无损。
Switchover 包括两个阶段:主集群切换为备集群和备集群切换为主集群。
Failover
表示在主集群不可用情况下,将一个备集群角色切换为主集群角色。
选择待切换的备集群
当存在多个备集群时,需要选择合适的备集群作为待切换的目标集群。主要考虑以下几点:
备集群的地域。
根据业务需要来确定主集群的地域,从而确定切换成新主集群的备集群的地域。
备集群的硬件配置,包括 CPU、I/O 带宽等
考虑备集群的硬件配置是否满足业务需求。
备集群的同步进度延迟应尽量小。
备集群落后越多,Switchover 切换的时间越长,Failover 后丢失的数据越多,故建议选择同步进度延迟小的备集群。
选择待切换的备集群的具体操作方法如下:
在各个集群上,查询
V$OB_CLUSTER视图的CURRENT_SCN字段,获取各个集群的同步进度。CURRENT_SCN是 unix 时间戳,是整型值,单位为微秒,表示当前的同步进度。例如,登录到备集群 2 上,执行以下 SQL 语句,查询备集群 2 的同步进度:
obclient> SELECT CURRENT_SCN, USEC_TO_TIME(CURRENT_SCN) AS SYNC_TS FROM V$OB_CLUSTER; +------------------+----------------------------+ | CURRENT_SCN | SYNC_TS | +------------------+----------------------------+ | 1596354672506590 | 2020-08-02 15:51:12.506590 | +------------------+----------------------------+ 1 row in setCURRENT_SCN越大,表示备集群同步延迟越低。同步延迟低的备集群适合作为目标切换集群。可以使用主集群的CURRENT_SCN值减去备集群的CURRENT_SCN值作为备集群的落后时间。在主集群上,查询
V$OB_STANDBY_STATUS视图,查看各个备集群的配置和保护级别。obclient> SELECT CLUSTER_ID, PROTECTION_LEVEL, REDO_TRANSPORT_OPTIONS FROM V$OB_STANDBY_STATUS;其中:
通过
REDO_TRANSPORT_OPTIONS字段可以查看各个备集群的日志传输参数配置,ASYNC表示是异步同步的备集群。通过
PROTECTION_LEVEL字段可以查看各个备集群的保护级别,等价于V$OB_CLUSTER视图的PROTECTION_LEVEL字段。
或者,您也可以通过 OCP 查看主备集群关系及同步延时情况,具体方法如下:
使用具备管理员权限的账号登录 OCP。
默认进入 集群 页面。
在 集群列表 区域,可以看到主集群信息,单击主集群左侧的+图标即可看到对应的备集群信息。
单击主集群名,跳转到主集群详情页面,再在左侧导航栏上,单击 拓扑图 。
拓扑图中展示了当前各个集群的角色。如果是备集群,还可以查看该备集群的同步延迟时间。
例如,图中展示的备集群 47,同步延时为 0.16s。
