Switchover 时会出现的问题?怎么解决?(一)

在验证主集群是否能够切换为备集群角色或备集群是否能切换为主集群角色时,需要查看 V$OB_CLUSTER 视图中的 SWITCHOVER_INFO 字段,该字段展示了不能成功执行 Switchover 命令的原因,本节主要介绍该字段的不同值所表示的含义以及针对此类问题的处理方法。

字段值 1:CHECK PRIMARY CLUSTER SERVER STATUS

含义

可能有 Server 不在线,需要校验主集群的 Server 状态。

处理方法

执行以下命令,在主集群或备集群上查询 Server 状态。如果 STATUS 不是 ACTIVE,则说明 Server 不在线,需要处理不在线的 Server。

obclient> SELECT SVR_IP, STATUS FROM __ALL_SERVER WHERE STATUS != ‘ACTIVE’;

字段值 2:CHECK MERGE STATUS

含义

合并任务的状态不正常,需要检查合并状态是否出现 Error。

处理方法

在当前集群上执行以下命令,查询合并状态。如果合并状态出现 ERROR,请联系技术支持人员协助处理。

obclient> SELECT ZONE, NAME, INFO FROM __ALL_ZONE WHERE NAME =‘MERGE_STATUS’;

字段值 3:NONE SYNCED STANDBY CLUSTER

含义

不存在同步的备集群,主集群不能切换为备集群。

处理方法

在主集群上,执行以下命令,查询备集群的详细同步状态以及不同步的原因。

obclient> SELECT CLUSTER_ID, SYNCHRONIZATION_STATUS FROM V$OB_STANDBY_STATUS;

字段值 4:CHECK SYS SCHEMA SYNC STATUS

含义

Schema 没有同步完成,需要校验备集群的系统租户的 Schema 是否同步完成。

处理方法

分别在主集群和备集群上执行以下命令,查询各自集群的 Schema 同步状态,查看出现 Schema 同步落后的 tenant_id。需要等待租户的 Schema 同步完成,如果发现同步卡住,请联系技术支持人员协助处理。

obclient> SELECT *, USEC_TO_TIME(MIN_SYS_TABLE_SCN), USEC_TO_TIME(MIN_USER_TABLE_SCN) FROM V$OB_CLUSTER_STATS;

字段值 5:CHECK USER SCHEMA SYNC STATUS

含义

Schema 没有同步完成,需要校验备集群的普通租户的 Schema 是否同步完成。

处理方法

分别在主集群和备集群上执行以下命令,查询各自集群的 Schema 同步状态,查看出现 Schema 同步落后的 tenant_id。需要等待租户的 Schema 同步完成,如果发现同步卡住,请联系技术支持人员协助处理。

obclient> SELECT *, USEC_TO_TIME(MIN_SYS_TABLE_SCN), USEC_TO_TIME(MIN_USER_TABLE_SCN) FROM V$OB_CLUSTER_STATS;

字段值 6:CHECK FREEZE INFO SYNC STATUS

含义

冻结信息没有同步完成,需要校验备集群的冻结信息是否同步完成。

处理方法

分别在主集群和备集群上执行以下命令,查询各自集群的冻结信息,查看落后的冻结版本。需要等待冻结信息同步完成,如果发现同步卡住,请联系技术支持人员协助处理。

obclient> SELECT * FROM __ALL_VIRTUAL_FREEZE_INFO;

字段值 7:CHECK ENOUGH REPLICA

含义

副本不足,需要检查备集群的副本个数是否足够。

处理方法

副本不足是指分区的活跃副本不满足多数派,一般原因是多数派副本所在的 Server 故障或者网络隔离所致,可以通过检查备集群上所有 Server 的状态是否正常来确认每个分区的副本数是否都足够。

检查所有 Server 的状态是否正常的语句如下:

obclient> SELECT SVR_IP, STATUS FROM __ALL_SERVER WHERE STATUS != ‘ACTIVE’;

字段值 8:CHECK REDO LOG SYNC STATUS

含义

REDO 日志没有同步完成,需要校验备集群的 REDO 日志是否同步完成。

处理方法

在备集群上执行以下命令,查询是否存在没有完成日志同步的副本,并查看对应副本的状态。

obclient> SELECT * FROM __ALL_VIRTUAL_CLOG_STAT WHERE IS_IN_SYNC=0;

如果存在没有完成日志同步的副本,需要等待同步完成。如果备集群一直追不上或者同步卡住,请联系技术支持人员协助处理。