MYSQL / MardiaDB'回收箱'

时间:2018-01-15 20:34:49

标签: mysql backup mariadb restore recycle

我正在使用MardiaDB,我想知道是否有办法安装回收站'在我的服务器上,如果有人删除了一个表或任何东西,它会转移到回收站并恢复它很容易。

没有谈论装修东西来恢复它以及所有这些东西,而是乱扔垃圾,保存地点'它存储的地方(我有足够的空间),直到我决定删除它或只是保持24小时。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

不存在此类功能。 http://bugs.mysql.com需要“功能请求”。

这样的功能必然涉及MySQL;它不能完全在OS的文件系统中完成。这是因为正在运行的mysql在RAM中缓存FS不知道的信息。并且因为有关table / db / proc / trigger / etc的信息不完全位于单个文件中。而是在其他更通用的文件中存在额外信息。

使用MyISAM,您的目标在fs中可以部分实现。 MyISAM表由3个文件组成:.frm.MYD',。MYI`。在fs可以将3个文件移动到其他地方之前,MySQL仍然需要刷新一些东西以忘记它知道该表。 MyISAM正在消失;所以甚至不要考虑使用“引擎”。

在InnoDB中,表由.ibd文件(如果使用file_per_table)和.frm文件以及公共ibdata1文件中的一些信息组成。如果表格为PARTITIONed,则布局更复杂。

在8.0版中,前一段的大部分都会变得不正确 - 正在发生重大变化。

“交易”是撤消对表格的写入的一种方式......

BEGIN;
INSERT/UPDATE/DELETE/etc...
if ( change-mind )
    then ROLLBACK;
    else COMMIT;

实际上,撤消日志充当回收站 - 但仅限于记录级别,直到您执行COMMIT

MySQL 8.0将添加在事务中具有DDL语句(例如,DROP TABLE)的能力。但是,再一次,只有COMMIT

COMMIT视为刷新回收站。