点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!问题发生当天,检查发现某台OB主机异常,OCP上显示该主机上OBServer已不可提供服务。协调主机侧核查,得到该OB主机异常,只能重装的结论。经过客户同意,目前需要先将该OB主机踢出OB集群,再交由主机侧重装。- OB架构:2-2-2【即三zone,每个zone两个OBServer】
检查除了异常OB主机,其他OBServer状态正常,且资源充足,满足租户缩容条件。在资源充足的情况下,将OB集群中租户unit个数从2缩到1。由于OB集群开启了自动均衡,正常情况下每个unit都会承载基本相同数量的副本,即每个unit都会有数据,故减少unit个数时,需要先将unit副本迁移走。检查异常OBServer上unit副本为0,按预想空unit迁移会很快结束,但实际unit迁移卡住。后台查询__all_rootservice_job视图显示SHRINK_RESOURCE_POOL_UNIT_NUM缩容任务状态一直处于INPROGRESS运行中,且租户状态一直显示运维中,任务长时间未终止。空unit产生主要怀疑是由于该OBServer异常导致unit中副本自动迁移走,但unit本身未清理掉,导致残留了个空unit。空unit一般均为特殊情况,OceanBase数据库内部迁移任务在完成后会有检查动作,但是空unit不会记录到tenant_zone_list中,会被过滤掉,导致检查一直不通过从而卡住。1)租户状态异常,一直显示运维中,需要先将该zone上unit个数调整回2查询unit视图,确认异常unit所属resource_pool:select * from gv$unit where tenant_id = <tenant_id> and unit_id = <unit_id>;
调整回对应resource_pool资源池Unit个数为2:alter resource pool <resource_pool> unit_num = 2;
注意:删除时需要同步修改资源池unit个数,不然无法执行。alter resource pool <resource_pool> unit_num=1 delete unit = (<unit_id>);
3)检查unit已删除,且租户恢复正常,unit个数也已缩容1)通过修改locality方式,给该空unit添加副本,让这个空unit有数据alter tenant <tenant_name> set locality="xxx";