详情页标题前

阿里云RDS数据库Recycle Bin-云淘科技

详情页1

由于DDL语句无法回滚,开发或运维人员如果误操作(例如DROP TABLE)可能会导致数据丢失。阿里云支持回收站(Recycle Bin)功能,临时将删除的转移到回收站,还可以设置保留的时间,方便您找回数据,同时提供了工具包(DBMS_RECYCLE)便于您快捷使用。

前提条件

实例版本如下:

  • RDS MySQL 8.0(内核小版本20191225及以上)
  • RDS MySQL 5.7(内核小版本20210430及以上)

Recycle Bin参数

Recycle Bin设计了如下五个参数。

参数 说明
loose_recycle_bin 是否打开回收站功能,包括session级别和global级别。您可以在控制台修改参数。默认值:OFF。
loose_recycle_bin_retention 回收站保留时间,单位:秒。默认为604800,即一周。您可以在控制台修改参数。
loose_recycle_scheduler 是否打开回收站的异步清理任务线程。您可以在控制台修改参数。默认值:OFF。
loose_recycle_scheduler_interval 回收站异步清理任务线程的轮询间隔,单位:秒。默认为30。暂不开放。
loose_recycle_scheduler_purge_table_print 是否打印异步清理现场工作的详细日志。默认值:OFF。暂不开放。

重要 为了防止磁盘空间被占满,建议合理设置保留时间,并打开后台清理任务线程。

Recycle Bin介绍

  • 回收/清理机制
    • 回收机制 执行TRUNCATE TABLE语句时,将原始表移动到专门的recycle bin目录中,并在原位置使用相同的结构创建新表。说明 仅RDS MySQL 8.0(内核小版本20200331及以上)支持。

      执行DROP TABLE/DATABASE语句时,只保留相关的表对象,并移动到专门的recycle bin目录中。其它对象的删除策略如下:

      • 如果是与表无关的对象,根据操作语句决定是否保留,不做回收。
      • 如果是表的附属对象,可能会修改表数据的,做删除处理,例如Trigger和Foreign key。 但Column statistics不做清理,随表进入回收站。
    • 清理机制

      回收站会启动一个后台线程,来异步清理超过recycle_bin_retention时间的表对象。在清理回收站表的时候,如果遇到大表,会再启动一个后台线程异步删除大表。

  • 权限

    RDS MySQL实例启动时,会初始化一个名为__recycle_bin__的数据库,作为回收站使用的专有数据库。__recycle_bin__是系统级数据库,您无法直接进行修改和删除。

    对于回收站内的表,虽然您无法直接执行drop table语句,但是可以使用call dbms_recycle.purge_table('

    ');进行清理。

    说明 账号在原表和回收站表都需要具有DROP权限。

  • 回收站表命名规则 Recycle Bin会从不同的数据库回收到统一的__recycle_bin__数据库中,所以需要保证目标表表名唯一,所以定义了如下命名格式:
    "__" +  + 

    参数说明如下。

  • 参数 说明
    Storage Engine 存储引擎名称。
    SE private id 存储引擎为每一个表生成的唯一值。例如在InnoDB引擎中就是table id。
  • 独立回收

    回收的设置只会影响该实例本身,不会影响到日志复制到的节点(备实例、只读实例和灾备实例)上。例如我们可以在主实例上设置回收,保留7天;在备实例上设置回收,保留14天。

    说明 回收站保留周期不同,将导致实例的空间占用差别比较大。

注意事项

  • 如果回收站数据库和待回收的表跨了文件系统,执行drop table语句将会搬迁表空间文件,耗时较长。
  • 如果Tablespace为General,可能会存在多个表共享同一个表空间的情况,当回收其中一张表的时候,不会搬迁相关的表空间文件。

管理Recycle Bin

AliSQL在DBMS_RECYCLE中定义了两个管理接口。详细说明如下:

  • show_tables 展示回收站中所有临时保存的表。命令如下:
    call dbms_recycle.show_tables();

    示例:

    mysql> call dbms_recycle.show_tables();
    +-----------------+---------------+---------------+--------------+---------------------+---------------------+
    | SCHEMA          | TABLE         | ORIGIN_SCHEMA | ORIGIN_TABLE | RECYCLED_TIME       | PURGE_TIME          |
    +-----------------+---------------+---------------+--------------+---------------------+---------------------+
    | __recycle_bin__ | __innodb_1063 | product_db    | t1           | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 |
    | __recycle_bin__ | __innodb_1064 | product_db    | t2           | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 |
    | __recycle_bin__ | __innodb_1065 | product_db    | parent       | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 |
    | __recycle_bin__ | __innodb_1066 | product_db    | child        | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 |
    +-----------------+---------------+---------------+--------------+---------------------+---------------------+
    4 rows in set (0.00 sec)
    参数 说明
    SCHEMA 回收站的数据库名。
    TABLE 进入回收站后的表名。
    ORIGIN_SCHEMA 原数据库名。
    ORIGIN_TABLE 原表名。
    RECYCLED_TIME 回收时间。
    PURGE_TIME 预计从回收站删除的时间。
  • purge_table 手动清理回收站中的表。命令如下:
    call dbms_recycle.purge_table('');

    说明

    • TABLE为进入回收站后的表名。
    • 账号在原表和回收站表都需要具有DROP权限。

    示例:

    call dbms_recycle.purge_table('__innodb_1063');
  • restore_table

    恢复回收站内的表。命令如下:

    call dbms_recycle.restore_table('','','');

    参数说明如下。

  • 参数 说明
    RECYCLE_TABLE 需要恢复的回收站内的表名。说明 如果仅传入此参数,会恢复到原始表。
    DEST_DB 目标数据库名。
    DEST_TABLE 目标表名。

    说明 由于restore_table命令需要SUPER权限,因此暂不支持手动执行。

    示例:

    mysql> call dbms_recycle.restore_table('__innodb_1063','testDB','testTable');

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/154653.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 阿里云RDS数据库RDS PostgreSQL间的单向同步-云淘科技

    本文介绍如何使用数据传输服务DTS(Data Transmission Service),实现RDS PostgreSQL间的单向同步。 前提条件 已创建源库和目标数据库 RDS PostgreSQL 实例,创建方式,请参见创建RDS PostgreSQL实例。 说明 建议源库和目标数据库的版本相同,或者从低版本同步到高版本以保障兼容性。 如为高版本同步至低…

    2023年12月9日
  • 阿里云ECS云服务器RenewReservedInstances-云淘科技

    调用RenewReservedInstances对已购买的一张或多张预留实例券进行续费。 接口说明 请确保在使用该接口前,您已充分了解预留实例券的计费方式。详情请参见预留实例券计费方式。 您可以调用DescribeReservedInstances查询已购买的预留实例券。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。…

    阿里云服务器 2023年12月9日
  • 阿里云ECS云服务器部署Web环境-云淘科技

    本篇教程介绍通过阿里云云市场镜像在Windows操作系统的ECS实例上快速部署Web环境。利用宝塔Windows面板一键安装IIS组件、PHP环境、MySQL数据库。 前提条件 已注册阿里云账号。如还未注册,请先完成账号注册。 已创建安全组并配置安全组规则开放端口20、21、3389、80及888(宝塔面板所需端口)。具体操作请参见添加安全组规则。 操作步骤…

    阿里云服务器 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云RDS数据库DeleteAccount – 删除数据库账号-云淘科技

    该接口用于删除数据库账号。 接口说明 适用引擎 RDS MySQL RDS PostgreSQL RDS SQL Server RDS MariaDB 相关功能文档 注意 使用该接口前,请仔细阅读功能文档,确保完全了解使用接口的前提条件及使用后造成的影响后,再进行操作。 RDS MySQL删除数据库账号 RDS PostgreSQL删除数据库账号 RDS S…

    阿里云数据库 2023年12月9日
  • 阿里云日志服务SLSJSON格式-云淘科技

    日志服务将日志投递到OSS后,支持存储为不同的文件格式,本文介绍JSON格式。 参数配置 在配置投递规则时,如果选择存储格式为json,对应的参数配置如下所示。 参数 说明 是否投递tag 是否投递日志tag字段,例如__tag__:abc。 OSS文件地址 投递到OSS后,OSS文件地址样例如下所示。 压缩类型 文件后缀 OSS文件地址示例 说明 不压缩 …

    阿里云日志服务SLS 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。