您可以通过以下几种方法来判断备集群在创建租户时是否卡住:
查询 表,对比主备集群的租户列表。
如果备集群中缺少部分租户,则表示备集群可能正在创建租户,或者创建租户失败出现了卡住的现象。
在主集群上,查询
V$OB_STANDBY_STATUS
视图的SYNCHRONIZATION_STATUS
列。如果该列的值为
SYS SCHEMA NOT SYNC
,则表示系统租户的 Schema 不同步,可能出现了备集群创建租户时卡住的现象。在主集群和备集群上,分别执行以下命令查询
V$OB_CLUSTER_STATS
视图,比较系统租户的 Schema 版本。如果备集群的系统租户的 Schema 版本比主集群的系统租户的 Schema 版本小,则表示可能出现了备集群创建租户时卡住的现象。
在主集群下,查询一个即将同步到备集群的系统租户的 DDL 变更。
查看同步情况的 SQL 语句如下:
FROM __ALL_DDL_OPERATION
LIMIT 10;
备集群创建租户时卡住的常见原因是租户资源池创建失败。本节以目标租户的 tenant_id
为 1001
为例,确认备集群中是否出现了租户资源池创建失败的方法如下:
查询资源配置,检查是否存在名称为
__unit_config_1001
的资源配置。如果查询结果中不存在对应的资源配置,则说明还没有开始创建租户,当前问题不是资源池创建失败导致。否则,需要执行下一步。
查询资源池,检查是否存在名称为
__resource_pool_1001
的资源池。obclient> SELECT * FROM __ALL_RESOURCE_POOL WHERE NAME LIKE '__resource_pool_1001';
如果查询结果中存在对应的资源池,则说明资源池创建成功,当前问题不是资源池创建失败导致。否则,说明资源池还未创建成功,需要执行下一步检查。
备集群上的 Server 宕机
备集群上在线的 Server 的可用资源不足
排查备集群上是否有机器故障,机器故障可能导致 Zone 内没有机器分配 Unit,创建资源池时报
-4656
的错误。如果确认是机器故障,则需要尽快恢复机器,保证有足够的 Server 在线。
如果确认有足够的 Server 在线,则需要计算 Server 的剩余资源,包括 CPU、内存等,人工调小备集群的租户资源配置,保证 Zone 内有机器分配 Unit。备集群会自动重试创建租户资源池,直到成功。
调整备集群租户资源配置的命令如下:
obclient> ALTER RESOURCE UNIT __unit_config_1001 MIN_MEMORY='xx', MAX_MEMORY='xx';
其中,
__unit_config_1001
表示tenant_id
为1001
的租户的资源配置。说明