oceanbase租户删除后资源不会马上释放

4.3.5bp1创建主备租户后,删除主备租户,立即查询
select cpu_assigned, mem_assigned, log_disk_assigned from gv$ob_servers;
cpu,mem, log_disk已分配大小不会马上释放,需要等一会儿才行。

场景:主备租户容灾切换后,原主恢复后,脚本需要自动化删除原主租户并重新作为备租户建立主备,但因为资源没有马上释放,创建主备偶现报错MEMORY resource not enough

问题:已分配资源为什么释放有延迟?如何解决?或者有什么同步方法等待释放完成?(不使用循环select等释放)

1 个赞

在 OceanBase 中,删除租户后资源不会马上释放的原因主要与回收站机制和延迟删除的设计有关。以下是详细说明以及如何立即释放资源的方法:

1. 租户删除后资源未立即释放的原因

根据已知信息[3]、[6]和[9]:

  • 当系统租户开启回收站功能时,执行 DROP TENANT 操作后,租户会被放入回收站,而不是立即删除。此时,租户的资源(如资源池)仍然保留,可以通过回收站恢复租户。
  • 即使关闭回收站功能,DROP TENANT 操作也会触发延迟删除机制,默认延迟时间为 7 天(由配置项 schema_history_expire_time 控制)。在这段时间内,租户的信息仍然可以通过内部表查询,资源也不会被立即释放。

因此,无论是开启还是关闭回收站功能,资源都不会立即释放。

下面三种方式立即释放:

DROP TENANT tenant_name FORCE;
DROP TENANT tenant_name PURGE;
DROP RESOURCE POOL resource_pool_name;

注意

  • 数据不可恢复:使用 FORCEPURGE 参数删除租户后,数据将无法通过回收站恢复,请务必确认不再需要该租户的数据。
  • 资源池管理:删除租户后,建议检查并清理不再使用的资源池,以避免资源浪费。
  • 权限要求:只有系统管理员(sys 租户的 root 用户)才能执行上述操作。

使用obd没办法立即释放是吧?

延迟删除理论上和集群参数有关: schema_history_expire_time
可用于设置需要保留的完整元数据历史数据的范围,也可用于设置延迟删除的租户的保留时间

还是为了给恢复缓冲时间,SYS租户设置: schema_history_expire_time时间呢,默认7天太长了。
用SYS租户进回收站清理下呢。

和回收站没关系吧,回收站是用来恢复租户的,而且默认保留7天。
我说的是删除租户后立即释放CPU内存log_disk资源,这个延迟大概一分钟左右。
而且我试了DROP TENANT xx FORCE然后DROP RESOURCE POOL ,DROP RESOURCE UNIT 仍然有延迟

延迟一分钟正常呀,我觉得都不算延迟了。

学习总结经验 :+1: :+1: :+1:

多学多看

:+1::+1::+1:我也遇到了一样的问题

1 个赞

这个是个好经验

1 个赞

多学多看

学习

加油

你好,这边咨询下看看是否属于预期内的延迟问题,稍等

1 个赞

你好,这个是属于预期内的。
租户删除现在没有等资源释放就会给用户返回成功的,是个异步的过程。可以看gv$ob_units这个视图确认unit资源有没有释放。根据场景你可以修改脚本循环判断gv$ob_servers视图资源是否够用。

1 个赞

学习