我正在使用MardiaDB,我想知道是否有办法安装回收站'在我的服务器上,如果有人删除了一个表或任何东西,它会转移到回收站并恢复它很容易。
没有谈论装修东西来恢复它以及所有这些东西,而是乱扔垃圾,保存地点'它存储的地方(我有足够的空间),直到我决定删除它或只是保持24小时。
有什么想法吗?
答案 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
视为刷新回收站。