MySQL单机版Recycle Bin回收站功能

最近调研了阿里的Recycle Bin回收站功能,可以保证数据不丢失。

为了防止开发或运维人员的误操作,比如DROP TABLE/DATABASE、TRUNCATE TABLE,这类DDL语句不具有可操作的回滚特性,而导致数据丢失,AliSQL 8.0(基于MySQL)新特性支持回收站功能(Recycle Bin),临时把删除的表转移到回收站,并保留可设置的时间,方便用户找回数据。为了方便,提供了 DBMS_RECYCLE package 作为管理接口。

前提条件 MySQL单机版

实例版本如下:

  • RDS MySQL 8.0
  • RDS MySQL 5.7

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是否打印异步清理现场工作的详细日志。暂不开放。

Recycle Bin介绍

  • 回收/清理机制
    • 回收机制执行TRUNCATE TABLE语句时,将原始表移动到专门的recycle bin目录中,并在原位置使用相同的结构创建新表。

      说明 仅RDS MySQL 8.0支持。

      执行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('<TABLE>');进行清理。

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

  • 回收站表命名规则

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

"__" + <Storage Engine> + <SE private id>

参数说明如下。

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

独立回收

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

注意事项

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

管理Recycle Bin

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

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

 参数如下:

参数说明
SCHEMA回收站的数据库名。
TABLE进入回收站后的表名。
ORIGIN_SCHEMA原数据库名。
ORIGIN_TABLE原表名。
RECYCLED_TIME回收时间。
PURGE_TIME预计从回收站删除的时间。

purge_table

手动清理回收站中的表。命令如下:

call dbms_recycle.purge_table('<TABLE>');
  • TABLE为进入回收站后的表名。
  • 账号在原表和回收站表都需要具有DROP权限。

示例:

call dbms_recycle.purge_table('__innodb_1063');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462755.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Delphi纯代码连SQLite数据库,同时支持数据库的加密解密

//摘自&#xff1a;http://bbs.witbase.com/thread-1141-1-1.html Delphi纯代码连SQLite数据库&#xff0c;同时支持数据库的加密解密 Delphi纯代码连SQLite数据库&#xff0c;同时支持数据库的加密解密本文的内容包括&#xff1a;&#xff08;1&#xff09;一个实现了加密解密…

用STATSVN统计公司SVN代码修改

直接用LOG&#xff0c;BOSS还是不满意&#xff0c;那只好架上JDK&#xff0c;用STATSVN了。 跑得还顺利&#xff0c;只是具体代码没跑出来。。 但共用一个帐号&#xff0c;害人呀&#xff0c;还好有提交注释里有程序员的名字。。 STATSVN文档很简单&#xff0c;简单报告也就一个…

Informix IDS 11零碎治理(918考试)认证指南,第 7 部分: IDS复制(24)

SDS&#xff1a;看管可以使用 onstat 或零碎看管接口&#xff08;SMI&#xff09;表查察 SDS 效能器统计信息。本节品评争论以下主题&#xff1a;onstat 选项 sysmaster 表 旧事日志输出 onstat 选项可以使用 onstat -g sds 饬令查察 SDS 效能器统计信息。onstat 的输出取决于运…

leafLet入门教程兼leafLet API中文文档参考

英文文档参考&#xff1a;https://leafletjs.com/reference-1.3.4.html#popup 博客参考&#xff1a;https://blog.csdn.net/qq_36595013/article/details/83144874#leafLet_API__243 使用说明参考&#xff1a;https://www.cnblogs.com/cainiaomeng/p/6072139.html转载于:https:…

MySQL源码解读之数据结构-LF_DYNARRAY

MySQL的代码中实现了一个Lock Free的Hash结构&#xff0c;称作LF_Hash。MySQL的不少模块使用了LF_Hash&#xff0c;比如Metadata Lock就依赖于它。但由于使用的方法不正确&#xff0c;导致了bug#98911和bug#98624。理解LF_Hash的实现细节&#xff0c;可以帮助我们用好LF_Hash。…

Flex通过Blazeds利用Remoteservice与后台java消息推送

Flex通过Blazeds利用Remoteservice与后台java消息推送 准备工作&#xff1a;Myeclipse中先建立一个Web project工程&#xff0c;然后导入Blazeds的文件&#xff0c;再转换为Flex项目类型。前言&#xff1a;Flex 通过开源的BlazeDS消息服务来支持订阅及发布消息。这个消息服务管…

如何运行一个Vue项目

一开始很多刚入手vue.js的人&#xff0c;会扒GitHub上的开源项目&#xff0c;但是发现不知如何运行GitHub上的开源项目&#xff0c;很尴尬。通过查阅网上教程&#xff0c;成功搭建好项目环境&#xff0c;同时对前段工程化有了朦朦胧胧的认知&#xff0c;因此将环境搭建过程分享…

用上Linux后收集变得山穷水尽

作者: ginceo 出自: http://www.linuxdiyf.com   没用Linux时上彀总得先开防火墙&#xff0c;然后再开杀毒软件把守&#xff0c;假如少了这些步骤我的机子将遭到史无前例的毁伤&#xff0c;有的时分换来的是硬盘继续事项一小时。遇到网友发来的音讯还是毛骨悚然&#xff0c;…

MySQL5.7 常用系统表大全

MySQL5.7 默认的模式有&#xff1a;information_schema&#xff0c; 具有 61个表&#xff1b; m ysqL, 具有31个表&#xff1b; performance_schema&#xff0c;具有87个表; sys, 具有1个表&#xff0c; 100个视图. Information_schema数据库是MySQL自带的&#xff0c;它提供了…

Hibernate初学之CURD

Hibernate初学之CURD 以前学过JDBC的增删改查&#xff0c;感觉挺方便的&#xff0c;用hibernate框架则会更加简便&#xff0c; 关于hibernate的增删改查模块&#xff0c;我感觉用代码解释再合适不过了&#xff1b; 首先是导包问题&#xff1a;应用hibernate需要导十个包&#x…

innobackupex备份工具

Top NSD DBA1 DAY07 innobackupex备份工具1 innobackupex备份工具 1.1 问题 安装percona软件包innobackupex完整备份、增量备份操作。恢复数据1.2 步骤 实现此案例需要按照如下步骤进行。 步骤一&#xff1a;安装XtraBackup软件包 1&#xff09;了解软件包描述信息 [rootdbsvr1…

计算机网络读书笔记(1)

传输控制协议TCP最主要特点&#xff1a; 1、 面向连接的传输层协议&#xff0c;类似于打电话 2、 点对点&#xff08;一对一&#xff09;&#xff0c;每一条TCP只能有两个端点 3、 提供可靠交付的服务 4、 全双工通信 5、 面向字节流&#xff08;所谓流&#xff1a;流入到…

网卡驱动收发包过程图解

网卡 网卡工作在物理层和数据链路层&#xff0c;主要由PHY/MAC芯片、Tx/Rx FIFO、DMA等组成&#xff0c;其中网线通过变压器接PHY芯片、PHY芯片通过MII接MAC芯片、MAC芯片接PCI总线 PHY芯片主要负责&#xff1a;CSMA/CD、模数转换、编解码、串并转换 MAC芯片主要负责&#x…

Cisco路由器全局、接口、协议调试指南

全局调试 在配置Cisco路由器时&#xff0c;全局和接口命令的界限是十分明显的。在这种情况下&#xff0c;我们使用“全局”来标识那些不能用于接口调试或者特定的传输介质类型 和协议调试的命令。例如&#xff0c;在2500系列路由器中&#xff0c;就可以使用调试命令分析Cisco发…

发送带颜色的MSG

作者&#xff1a;深渊野鱼 来源&#xff1a;博客园 发布时间&#xff1a;2008-01-09 15:04 阅读&#xff1a;245 次 原文链接 [收藏] 用户经常发送MESSAGE,MESSAGE的颜色往往是绿色的&#xff0c;其实是可以发送彩色的MESSAGE的。解答 1.创建SNDCOLMSG CLP程序。SNDCOL…

在c++中,如果派生类没有重写基类中对应virtual函数会怎样?

在c中&#xff0c;如果一个派生类没有重写基类中对应的虚函数&#xff0c;那么在派生类的构造函数中依然会创建虚指针&#xff0c;但是该虚指针指向的是基类的虚表。 #include <iostream> #include <string>class Base { public:virtual void foo() {std::cout &l…

哪些类继承了Collection接口

Collection集合的基本结构&#xff1a; 1、Collection接口 Collection是最基本集合接口&#xff0c;它定义了一组允许重复的对象。Collection接口派生了两个子接口Set和List&#xff0c;分别定义了两种不同的存储方式&#xff0c;如下&#xff1a; 2、 Set接口 Set接口继承于Co…

陶哲轩实分析 定理 13.1.5

设 $(X,d_X)$ 是度量空间,并设 $(Y,d_Y)$ 是另一个度量空间.设 $f:X\to Y$是函数,那么 $f$ 是连续的可以推出 (c)只要 $V$ 是 $Y$ 中的开集,集合 $f^{-1}(V):\{x\in X:f(x)\in V\}$ 就 是 $X$ 中的开集.\begin{proof} 为了证明 $f^{-1}(V)$ 是开集,我们只用证明对于 $f^{-1}(V)…

安装Orchard错误

直接使用Visual Studio2010运行没有任何问题&#xff0c;但是配置到IIS就报如下的错误&#xff1a; 错误摘要 HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面&#xff0c;因为该页的相关配置数据无效。 模块 IIS Web Core 通知 BeginRequest 处理程序 尚未确定 …

在c++中一个空类占用的字节数

结论&#xff1a; 在c中一个空类占用&#xff1a;1Byte。 有的同学认为一个空类占0Byte&#xff0c;那么定义一个空类时&#xff0c;他存放到哪里呢&#xff1f;为此&#xff0c;在c编译器中&#xff0c;为空类设置了占用1Byte内存。 #include <iostream> // std::c…