数据库的一些非常不错的企业级功能都是“养兵千日,用兵一时”,比如Oracle 10g中的回收站(Recycle Bin)功能,可以在特殊情况下发挥特种兵的功能,比如当你删除一个表空间、一个用户(Schema)时,可能会删除很多的表,包括你不想删除的一些表。

这种例子还是很多的,早些年很多的DBA使用图形工具来访问数据库,所连接的用户权限又比较高,当查询大量数据引起图形工具短暂失去响应时,很容易多打几下键盘或者多点几下鼠标,等到图形工具响应过来,发现些表或某些用户已经不见了。

前面讲的是无心之过,还可以看到一些有心的恶意操作,比如因员工和公司的关系不够友善引起的破坏性操作。这时就可以检查一下Oracle数据库回收站中是否还有被删除的表。

AliSQL是阿里云RDS MySQL团队精心打造的一个分支,在性能、功能、稳定性上都有极大的提升和突破。在2019年12月份发布的版本中也带了Recycle Bin功能,只需要设置一个参数就可以开启:

mysql> set global recycle_bin=on;
Query OK, 0 rows affected (0.00 sec)
mysql> show global variables like 'recycle_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| recycle_bin   | ON    |
+---------------+-------+
1 row in set (0.00 sec)

接下来让我们来创建一个表,插入一些数据,进行功能测试和验证。如下所示:

mysql> use test;
Database changed
mysql> create table t_recycle_bin_demo (col1 int not null);
Query OK, 0 rows affected (0.01 sec)
mysql> insert into t_recycle_bin_demo values (1),(2);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0
mysql> select * from t_recycle_bin_demo;
+------+
| col1 |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)

假设这是一张很重要的表,并且被意外Drop掉了,让我们来看一下如何找回这张表的数据。如下所示:
*请左右滑动阅览

mysql> drop table t_recycle_bin_demo;
Query OK, 0 rows affected (0.01 sec)
mysql> call dbms_recycle.show_tables();
+-----------------+---------------+---------------+--------------------+---------------------+---------------------+
| SCHEMA          | TABLE         | ORIGIN_SCHEMA | ORIGIN_TABLE       | RECYCLED_TIME       | PURGE_TIME          |
+-----------------+---------------+---------------+--------------------+---------------------+---------------------+
| __recycle_bin__ | __innodb_1073 | test          | t_recycle_bin_demo | 2020-02-27 06:48:24 | 2020-03-05 06:48:24 |
+-----------------+---------------+---------------+--------------------+---------------------+---------------------+
1 row in set (0.00 sec)
mysql> select * from `__recycle_bin__`.`__innodb_1073`;
+------+
| col1 |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)

可以看到,AliSQL在开启回收站功能的情况下,被删除的表被移到了“__recycle_bin__”数据库下面,可以通过Select语句直接访问读出被删除的数据以进行恢复,这样就找回了你的重要数据。和Oracle不同的地方是,“__recycle_bin__”数据库访问需要明确的授权操作,这样可以防止表的所有者(可能是恶意者)同步清理回收站中的表。比如我用一般用户登进去操作,就会报权限错误,如下所示:
*请左右滑动阅览

mysql> select * from `__recycle_bin__`.`__innodb_1073`;
ERROR 1142 (42000): SELECT command denied to user 'test'@'localhost' for table '__innodb_1073'
mysql> call dbms_recycle.purge_table('__innodb_1073');
ERROR 1142 (42000): DROP command denied to user 'test'@'localhost' for table '__innodb_1073'

可以看到通过AliSQL的回收站功能,以及精心规划的权限管理机制,可以有效地处理表被意外或恶意删除的问题,确保你的数据安全。

点这里了解Recycle Bin功能详情


上阿里云采购季
云数据库分会场一站解决
扫描二维码直达

原文链接
本文为云栖社区原创内容,未经允许不得转载。

防删库实用指南 | 只需一步,快速召回被误删的表相关推荐

  1. 只需两步快速获取微信小程序源码

    第一次在掘金这样高大上的社区写文章,忐忑地敲下我获取小程序源码过程中的经验分享. 最近在学习微信小程序开发,半个月学习下来,很想实战一下踩踩坑,于是就仿写了某个小程序的前端实现,过程一言难尽,差不多两 ...

  2. 【RPA之家转载】只需一步快速合并几百个Excel文件

    你遇到过要把几百个excel的数据合并起来的需求吗? 最简单的方法:用alteryx,只需一步,就可以轻松做到这一点,如下图1: 拖拽一个读取工具(Input Data,我用的是英文版,这个软件有中文 ...

  3. 还在为动态太大不能用发愁么?只需3步学会高效压缩GIF动图

    不管是做自媒体,还是上传文件到网页上,总是会遇到一些文件大小限制的情况. 如何在保障动图质量的情况下,可以最大程度上压缩动图的体积呢?别急,小编这就带你瞧瞧Mac只需3步快速压缩GIF图片,亲测将6. ...

  4. 阿里云asp主机 后台登录一直提示验证码错误_Lazada官方最全开店指南首发!云开店之入驻篇,快速入驻只需四步...

    近期后台收到了许多商家朋友关于如何入驻.运营Lazada店铺的问题咨询,平台特此针对Lazada入驻流程做了全面升级优化,同时整理出一套完整的新商家入驻解决方案 -- 极速云开店.作为"春风 ...

  5. 只需两步获取任何小程序源码

    这种方法,并不能反编译出所有的小程序源码,请自知! 具体的局限请看:qwerty472123大神的md文件 https://github.com/qwerty472123/wxappUnpacker ...

  6. 只需两步获取任何微信小程序源码

    只需两步获取任何微信小程序源码 kedwan关注 12018.09.15 09:32:43字数 2,428阅读 3,946 转载自百家号作者:不忘初心lucy 第一次在掘金这样高大上的社区写文章,忐忑 ...

  7. AI帮你写Python,安装只需5步,还能任你调教 | 开源

    鱼羊 发自 凹非寺  量子位 报道 | 公众号 QbitAI 一行一行地敲代码就像是徒手搬砖,聪明的程序猿们表示:我们要解放生产力! 比如像这样: 在机器学习的时代,AI智能补全代码早已不是梦想,各种 ...

  8. iphone看python文件_Python实战 | 只需 ”三步“ 爬取二手iphone手机信息(转发送源码)...

    原标题:Python实战 | 只需 "三步" 爬取二手iphone手机信息(转发送源码) 本次实战是爬取二手苹果手机的信息,共爬取了300部手机信息,效果如下: 开发环境 环境:M ...

  9. 新工具上线!只需2步助你轻松学爬虫!

    作者简介:张老师,学习计算机十余年,在信息安全.生物信息学.会计.平面设计.编辑出版等多个领域也均有涉猎,热爱钻研.热爱考证.热爱生活. 你还在为Python爬虫入门发愁么? 你还在构建request ...

最新文章

  1. delphi 企业微信消息机器人_简单用VBS调用企业微信机器人发定时消息的方法
  2. 第二百六十一、二天 how can I坚持
  3. openharmony编译报错ubuntu20.04按照官方文档,hb set报错为OHOS ERROR] Invalid vendor path: /home/openharmony/vendor
  4. 使用jdbc执行SQL实现登录查询1-带配置文件和工具类
  5. 16、React Native实战之TextInput组件
  6. php获取工作日时间,ThinkPHP中获取指定日期后工作日的具体日期方法
  7. abs和pc混在一起怎么解决_PC、ABS常见的7大问题及解决方案
  8. APP测试之Monkey压力测试(一)
  9. loadrunner之header相关,token等
  10. CICD详解(七)——git、gitlab与github
  11. Linux系统编程 -- IO缓冲区
  12. 怎么做301永久重定向
  13. python爬虫:爬取医药数据库drugbank
  14. selenium——鼠标事件
  15. laravel auth(api)-attempt 返回false_3分钟短文:Laravel把数据验证的手伸向“请求体”...
  16. 协创物联网合肥产业园项目远程预付费电能管理系统的设计与应用
  17. 南京工业大学计算机科学与技术学院保研外校,南京工业大学计算机科学与技术学院2018年招收推荐免试研究生章程...
  18. 提取swf素材_|SWF素材提取工具(SWF Decompiler Magic)下载v5.2.2.20 - 欧普软件下载
  19. 服务器虚拟机声卡无法加载,Esxi虚拟机添加声卡
  20. 计算机网络的分类3:按网络的工作方式分类,分为集中式网络、分布式网络

热门文章

  1. python app开发模块_Python pytkapp包_程序模块 - PyPI - Python中文网
  2. tp5 php跨域,TP5.1解决跨域
  3. .net mysql 更新_升级 MySql.Data for NET 后遇到的神坑
  4. jop怎么读音英语怎么说_“春晚”英语怎么说?
  5. 【LeetCode笔记】215. 数组中的第K个最大元素(Java、快排、堆排、并发快排)
  6. 宝塔linux忘记密码,宝塔忘记登录入口了怎么解决 宝塔面板密码忘记了怎么办
  7. 计算机网络 --- 数据链路层CSMA/CD协议
  8. 松阳天气预报软件测试,松阳天气预报15天
  9. java商城_java网上商城系统怎么样?优势又有哪些?
  10. python三方库打包项目中_将Python库打包到项目中