当前位置:首页 > 问答 > 正文

后浪云OceanBase里那个清理租户数据的PURGE操作到底咋用,讲讲细节和注意点

你得搞清楚这个PURGE操作是干嘛的,它不是让你随便删库跑路的,它的主要任务是清理OceanBase数据库的回收站里的对象,简单说,就是当你删了一个表、数据库(在OceanBObse里叫Database)或者租户之后,这些东西并不是立刻从物理上消失,而是被放到了一个叫“回收站”的地方,PURGE就是用来彻底清空回收站或者清空里面某个特定对象的,清空了就真的找不回来了。

这个设计其实跟你在电脑上删文件先放回收站是一个道理,给你一个后悔的机会,防止误操作。

PURGE操作具体怎么用?

PURGE命令有好几种用法,针对不同级别的对象。

  1. 彻底清空整个回收站(最狠的操作): 命令特别简单:PURGE RECYCLEBIN; 你一执行这个,当前租户的回收站里所有被删除的对象就全都没了,空间也会被释放,这个操作需要很高的权限,一般是租户的管理员(比如root用户)才能干。

  2. 清理某个特定的表: 比如你之前删了一个叫my_old_table的表,它在回收站里会有一个系统自动生成的新名字,你可以先查一下回收站(怎么查待会儿说),然后用这个新名字来清理它: PURGE TABLE "RECYCLEBIN_OBPURGE_1673854200053064"; 注意,这里的名字是带双引号的,因为系统生成的名字通常很复杂,你也可以用原始表名来清理,但前提是回收站里没有重复名字的被删表: PURGE TABLE my_old_table;

  3. 清理某个特定的数据库(Database): 跟清理表类似,你可以清理整个被删除的数据库: PURGE DATABASE "RECYCLEBIN_OBPURGE_1673854200053065"; 或者 PURGE DATABASE my_old_db; 这会把这个数据库以及它里面所有的表都彻底清除。

  4. 清理某个特定的租户: 这个权限要求就更高了,通常需要在系统租户(sys租户)下操作,清理一个已经被删除的租户: PURGE TENANT my_old_tenant; 这个操作影响巨大,因为一个租户下面可能有很多数据库和表。

在使用PURGE之前,你必须知道的细节和注意点(非常重要!):

  • 第一,也是最重要的一点:PURGE操作是不可逆的! 一旦执行,数据就真的物理删除了,用任何手段都恢复不了,所以动手之前,务必、务必、务必确认你要清理的对象是不是真的没用了,最好在执行前跟相关业务人员再三确认。

  • 第二,先查看回收站里的内容。 你不能瞎清空,得先看看回收站里有什么,查看的命令是:SHOW RECYCLEBIN; 这个命令会列出回收站里所有对象的信息,包括它原来的名字、被删除的时间、以及在回收站里的系统新名字,你PURGE的时候,最好用SHOW RECYCLEBIN查到的那个系统生成的名字,这样最准确,不会搞错。

  • 第三,注意回收站的空间占用和自动清理。 回收站里的对象虽然说是“被删除”了,但它们仍然占着你的磁盘空间,如果你的磁盘空间非常紧张,就要定期清理回收站,OceanBase回收站本身也有一个自动清理机制,当空间不足时,它会按照对象被删除的时间顺序,自动清理掉最早的那些对象来腾地方,所以你也不能完全指望回收站能永远帮你留着数据。

  • 第四,并不是所有删除操作都会进回收站。 回收站功能默认是开启的,但你可以通过设置系统变量recyclebinOFF来关闭它,如果关闭了回收站,那么你执行DROP命令删除对象时,就会直接彻底删除,不会进入回收站,自然也就没法用PURGE了(因为根本没进去),你可以用SHOW VARIABLES LIKE 'recyclebin';来查看当前回收站是开还是关。

  • 第五,直接DROP PURGE的用法。 如果你确定某个表肯定不要了,不想让它进回收站占地方,可以在删除的时候直接加PURGE选项,一步到位彻底删除,命令是:DROP TABLE my_table PURGE;,这样操作,这个表就不会经过回收站,直接物理删除了。

  • 第六,权限问题。 执行PURGE操作需要相应的权限,你要PURGE一个表,你至少需要有这个表所在数据库的DROP权限,而要PURGE整个回收站(PURGE RECYCLEBIN)或者一个租户,则需要更高级的权限,比如租户的超级用户权限。

总结一下流程: 当你需要清理空间或者确定某些废弃数据时,标准的、安全的做法是:

  1. SHOW RECYCLEBIN; 命令仔细查看回收站内容。
  2. 确认你要清理的那个对象(记下它的系统生成名)。
  3. 再次确认这个对象是否真的可以永久删除。
  4. 执行对应的 PURGE 命令(PURGE TABLE "那个很长的名字";)。
  5. 执行完后,可以再跑一次 SHOW RECYCLEBIN; 确认对象已经不见了。

PURGE是一个强大的管理工具,但也是一个“危险”的工具,它的核心价值在于提供了数据删除前的最后一道保险,用好它的关键在于:操作前谨慎查看,执行时明确对象,心里始终绷着“数据无价”这根弦。

后浪云OceanBase里那个清理租户数据的PURGE操作到底咋用,讲讲细节和注意点