首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 数据库 V4.2.x 中备份任务结束后,__all_virtual_sys_task_status 表中残留未结束任务的原因和解决方法
更新时间:2026-05-11 09:51
问题现象
系统表
__all_virtual_sys_task_status记录里有长时间不结束的备份任务。可能伴随 SSTable 个数过多等现象。
可能伴随 OBServer 存储空间爆。
关键诊断信息
触发条件
备份在 OBServer 上执行的时候有任务遇到可重试的错误,例如 IO 错误。
事前巡检
检查是否有超过一天未结束的备份任务。
select datediff(now(), start_time) >= 1 from oceanbase.__all_virtual_sys_task_status where task_type like '%BACKUP%';
事后诊断
-- 为空
select * from oceanbase.__all_virtual_backup_job;
但是查询如下语句。
-- 不为空
select * from oceanbase.__all_virtual_sys_task_status where task_type like '%BACKUP%';
问题原因
备份任务是并行执行但是串行结束的,OBServer 这边任务执行打点不够细,导致有任务在循环中无法退出,应该检查是否有其他任务失败无法退出。
问题的风险及影响
由于备份可能会 hold tablet 引用计数,可能最终会导致 SSTable 数组爆,影响用户写入。
由于老 SSTable 无法释放,可能导致 OBServer 空间爆。
影响租户
影响 OceanBase 数据库中的 Oracle 租户和 MySQL 租户,对于 SYS 租户无影响。
影响版本
OceanBase 数据库 V4.2.1 GA(oceanbase-4.2.1.0-100000182023092722)及之后版本。
解决方法及规避方式
解决方法:
升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V4.2.1 BP7(oceanbase-4.2.1.7-107000112024052920)及之后版本。
规避方式:
重启
__all_virtual_sys_task_status表中task_type为 BACKUP 的 OBServer。