适用场景
OCP 白屏解耦备集群效率及准确性不符合预期,备集群 MIN(SYS_TABLE_SCN,USER_TABLE_SCN) 已推过主集群业务停写位点,FAILOVER 阶段仍存在大量 FLASHBACK 及 CUTDATA 过程,耗时较久。
操作步骤
终止业务请求,锁定业务用户,杀连接,并记录业务停写时间位点。
在 OceanBase 数据库后台,确认无活动 SESSION、事务均已提交。
查询是否存在活跃的 SESSION。
SELECT COUNT(*) FROM OceanBase.__ALL_VIRTUAL_PROCESSLIST WHERE STATE='ACTIVE' AND TENANT<>'SYS';查询事务是否均已提交。
SELECT COUNT(*) FROM OceanBase.__ALL_VIRTUAL_TRANS_STAT WHERE TENANT_ID>1000 AND IS_EXITING <> 1;确认以上两查询结果均为空。
确认备集群同步位点已过业务停写时间。
确认
STANDBY_SYNC_TIMESTAMP备集群同步位点与NOW()当前时间基本持平,且大于记录的业务停写时间位点。SELECT NOW(),USEC_TO_TIME(CURRENT_SCN) STANDBY_SYNC_TIMESTAMP FROM OceanBase.V$OB_CLUSTER;确认 SYS 及业务租户
USEC_TO_TIME(MIN_SYS_TABLE_SCN),USEC_TO_TIME(MIN_USER_TABLE_SCN)与NOW()当前时间基本持平,且大于记录的业务停写时间位点。SELECT NOW(),TENANT_ID,DDL_LAG,USEC_TO_TIME(MIN_SYS_TABLE_SCN),USEC_TO_TIME(MIN_USER_TABLE_SCN) FROM OceanBase.V$OB_CLUSTER_STATS;
发起解耦。
获取备集群名、集群 ID (备集群 SYS 租户)。
SELECT CLUSTER_NAME,CLUSTER_ID FROM OceanBase.V$OB_CLUSTER;备集群 SYS 租户中 DISCONNECT 校验,带入集群 CLUSTER_NAME、备集群CLUSTER_ID、解耦后新集群名。
ALTER SYSTEM DISCONNECT STANDBY CLUSTER '$CLUSTER_NAME' CLUSTER_ID $STANDBY_CLUSTER_ID SET CLUSTER_NAME '$NEW_CLUSTER_NAME' VERIFY;备集群 SYS 租户中发起 DISCONNECT,带入集群 CLUSTER_NAME、备集群CLUSTER_ID、解耦后新集群名。
ALTER SYSTEM DISCONNECT STANDBY CLUSTER '$CLUSTER_NAME' CLUSTER_ID $STANDBY_CLUSTER_ID SET CLUSTER_NAME '$NEW_CLUSTER_NAME';
主集群移除主备关系。
主集群 SYS 租户中带入原备集群名(即主集群名)、备集群 ID。
ALTER SYSTEM REMOVE CLUSTER '$CLUSTER_NAME' CLUSTER_ID = $备集群 ID;无损 FAILOVER。
获取备集群名、集群 ID。
SELECT CLUSTER_NAME,CLUSTER_ID FROM OceanBase.V$OB_CLUSTER;确认备集群无创建中的副本,确认查询结果为空。
SELECT * FROM OceanBase.__ALL_VIRTUAL_META_TABLE WHERE IS_RESTORE = 100;备集群 SYS 租户中带入 1 中查询到的集群名、集群 ID。
ALTER SYSTEM FAILOVER TO '$CLUSTER_NAME' CLUSTER_ID=$CLUSTER_ID FORCE;确认 FAILOVER 进展,获取 TRACE_ID。
SELECT FACILITY, TIMESTAMP, MESSAGE FROM OceanBase.V$OB_CLUSTER_EVENT_HISTORY WHERE FACILITY LIKE '%failover to primary%';带入 TRACE_ID,查看 FAILOVER 所处的阶段。
SELECT FACILITY, TIMESTAMP FROM OceanBase.V$OB_CLUSTER_EVENT_HISTORY WHERE FACILITY LIKE '%trace_id:Y39B7644564D0-0005CD0AF66D9CBA%';
5.FAILOVER 结束后,发起合并。
ALTER SYSTEM MAJOR FREEZE;
适用版本
OceanBase 数据库 V3.x 版本。