2

OB运维 | tenant--删除租户的命令

 2 months ago
source link: https://blog.51cto.com/u_15077536/9981933
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

作者:姚嵩

不知道是地球人还是外星人,知道的可以留言告诉小编…


删除租户后,租户下的数据库和表也同时被删除。

但是租户使⽤的资源配置不会被删除,资源配置可以继续给其他租户使⽤。

只有sys租户的root⽤户才能执⾏drop tenant命令。

DROP TENANT [IF EXISTS] tenant_name [PURGE|FORCE];

删除租户的⽅式:

OB运维 | tenant--删除租户的命令_删除租户

删除租户⽅式的区别:

OB运维 | tenant--删除租户的命令_unix_02

查看和设置延迟回收时间:

show parameters like 'schema_history_expire_time'; -- 取值范围[1h, 30d],默认7天;
alter system set schema_history_expire_time='7d' ; -- 设置延迟回收时间,设置即⽣效;

查看和设置回收站⾃动清理时间:

show parameters like 'recyclebin_object_expire_time'; -- 取值范围[0s, +∞),0s表示关闭⾃动回收功能;
 ALTER SYSTEM SET recyclebin_object_expire_time = "7d"; -- 设置⾃动清理时间,设置即⽣效;

回收站中租户的处理:

删除租户,将其置于回收站中:

set recyclebin=1; DROP TENANT t1;

查看回收站中的租户:

show recyclebin ;
 select tenant_name,status,in_recyclebin,
 from_unixtime(substr(drop_tenant_time,1,10),"%Y-%m-%d %H:%i:%s") drop_tenant_time
 from oceanbase.__all_tenant where in_recyclebin=1 ;

恢复回收站中的租户(回收租户时,租户名可⽤租户原始名称或者回收站中的对象名):

FLASHBACK TENANT t1 TO BEFORE DROP ; -- 使⽤租户原始名称恢复
 FLASHBACK TENANT __recycle_$_1665918035_1676612471384576 TO BEFORE DROP ; -- 使⽤租户回收站中的名称恢复
 select tenant_name,status,in_recyclebin,
 from_unixtime(substr(drop_tenant_time,1,10),"%Y-%m-%d %H:%:%s") drop_tenant_time
 from oceanbase.__all_tenant where tenant_name='t1' ;

清除回收站中的租户:

-- purge只会删除回收站中的租户,并把租户转为延迟删除,所以资源并未释放
 purge tenant t1 ; -- 可以使⽤租户名清除
 purge tenant __recycle_$_1665918035_1676617637326848 ; -- 可以使⽤对象名清除
 -- drop会删除回收站中的租户,以及__all_tenant中的记录,真正释放了资源池
 drop tenant __recycle_$_1665918035_1676613654350848 force; -- 只能使⽤对象名

验证租户是否已永久删除(已不存在租户对应的条⽬):

show recyclebin ;
 select tenant_name,status,in_recyclebin,
 from_unixtime(substr(drop_tenant_time,1,10),"%Y-%m-%d %H:%i:%s") drop_tenant_time
 from oceanbase.__all_tenant ;

延迟删除的租户的处理:

延迟删除租户(两种⽅法):
set recyclebin=0; DROP TENANT t2;
DROP TENANT t2 PURGE;

查看延迟删除的租户:

select tenant_name,status,in_recyclebin,
from_unixtime(substr(drop_tenant_time,1,10),"%Y-%m-%d %H:%i:%s") drop_tenant_time
 from oceanbase.__all_tenant where status='TENANT_STATUS_DROPPING';

⼿动删除延迟删除的租户:

drop tenant t2 force

⽴即删除租户:

⽴即/永久删除租户的命令:

drop tenant t3 force ;

租户的不同状态说明:

OB运维 | tenant--删除租户的命令_取值范围_03

status 值为 TENANT_STATUS_NORMAL,表示正常的租户;

in_recyclebin 值为 1,表示租户此时正在回收站中;

status 值为 TENANT_STATUS_DROPPING,且tenant_name以 _recycle$ 开头,表示已使⽤purge语句将租户从回收站中删除,租户已转为延迟删除状态;

status 值为 TENANT_STATUS_DROPPING,且tenant_name不以 _recycle$ 开头,表示租户是通过DROP TENANT xx PURGE;语句执⾏的延迟删除

– 环境准备

OB运维 | tenant--删除租户的命令_取值范围_04

– 恢复回收站中的租户

OB运维 | tenant--删除租户的命令_对象名_05

– 删除回收站中的租户

OB运维 | tenant--删除租户的命令_对象名_06

– 延迟删除租户

OB运维 | tenant--删除租户的命令_unix_07

– ⽴即删除租户

OB运维 | tenant--删除租户的命令_取值范围_08

Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK