繁体   English   中英

MYSQL / MardiaDB“回收站”

[英]MYSQL/MardiaDB 'recycle bin'

我正在使用MardiaDB,我想知道是否有一种方法可以在服务器上安装“回收站”,如果有人删除了表或将其转移到回收站的任何内容,恢复起来很容易。

不是在谈论安装东西来恢复它以及所有东西,而是在一个“保存的地方”存储它(我有更多的空间),直到我决定删除它或将其保存24小时为止。

有什么想法吗?

不存在这样的功能。 http://bugs.mysql.com接受“功能请求”。

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

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

在InnoDB中,表由.ibd文件(如果使用file_per_table)加上.frm文件以及公用ibdata1文件中的一些信息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视为冲洗回收站。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM