问题描述
日志中一直对已经删除的租户打印 ret=-5157 的类似日志。
WARN [SHARE.SCHEMA] get_tenant_status (ob_schema_getter_guard.cpp:9694) [127795][0][xxxxx-xxxxx-xxxxx-xxxx] [lt=3] [dc=0] t enant not exist(ret=-5157, tenant_id=1070)
WARN [SHARE.SCHEMA] check_tenant_is_restore (ob_schema_getter_guard.cpp:9658) [127795][0][xxxxx-xxxxx-xxxxx-xxxx] [lt=10] [ dc=0] fail to get tenant status(ret=-5157, ret="OB_TENANT_NOT_EXIST", tenant_id=1070)
WARN [SHARE.SCHEMA] check_tenant_is_restore (ob_multi_version_schema_service.cpp:4686) [127795][0][xxxxx-xxxxx-xxxxx-xxxx] [lt=7] [dc=0] fail to check tenant is restore(ret=-5157, tenant_id=1070)
WARN [SHARE.SCHEMA] get_tenant_schema_guard (ob_multi_version_schema_service.cpp:1551) [127795][0][xxxxx-xxxxx-xxxxx-xxxx] [lt=4] [dc=0] fail to check restore tenant exist(ret=-5157, tenant_id=1070)
WARN [SHARE.SCHEMA] get_tenant_status (ob_schema_getter_guard.cpp:9694) [127795][0][xxxxx-xxxxx-xxxxx-xxxx] [lt=3] [dc=0] t enant not exist(ret=-5157, tenant_id=1070)
适用版本
OceanBase 数据库 V2.x 和 V3.x 版本。
问题原因
在 OceanBase 数据库 V4.0 版本之前,RS 调度的任务一旦加入队列就不会主动取消,因此租户被删除后并不能主动清理残留的索引创建任务。租户被删除后,RS 的索引创建任务会不断进行重试,并打印告警日志。
解决方法
在 OceanBase 支持人员的帮助下,对索引创建的任务和记录进行清理:删除掉
__all_index_build_stat和__all_acquired_snapshot表中相关租户的记录。对 RS 进行切主,并重启原来的 RS 节点,来重置任务队列。