MYSQL/MardiaDB 'recycle bin'
MYSQL/MardiaDB 'recycle bin'
我正在使用 MardiaDB,我想知道是否有办法在我的服务器上安装一个 'recycle bin',如果有人删除了一个 table 或任何它被转移到回收站的东西bin 和恢复它很容易。
不是在谈论安装东西来恢复它和所有那些东西,而是在 'save place' 它被存储的地方(我有足够的 space),直到我决定删除它或只是保留它在那里 24 小时。
有什么想法吗?
不存在此类功能。 http://bugs.mysql.com 占用 "feature requests".
这样的功能必然涉及MySQL;它不能完全在 OS 的文件系统中完成。这是因为 运行 mysql 在 RAM 中缓存了 FS 不知道的信息。而且因为有关 table/db/proc/trigger/etc 的信息并不完全位于单个文件中。相反,额外的信息存在于其他更一般的文件中。
使用 MyISAM,您的目标在 fs 中是部分可能的。 MyISAM table 由 3 个文件组成:.frm
、.MYD',
.MYI`。在 fs 将 3 个文件移动到其他地方之前,MySQL 仍然需要刷新一些东西以忘记它知道 table。 MyISAM 即将消失;所以甚至不要考虑使用 'Engine'.
在 InnoDB 中,一个 table 由一个 .ibd
文件(如果使用 file_per_table)加上一个 .frm
文件,再加上公共 ibdata1
文件。如果table是PARTITIONed
,布局就比较复杂了。
在 8.0 版本中,前面的大部分内容将变得不正确 -- 发生重大变化。
"Transactions" 是一种撤消写入 table...
的方法
BEGIN;
INSERT/UPDATE/DELETE/etc...
if ( change-mind )
then ROLLBACK;
else COMMIT;
实际上,撤消日志充当回收站 -- 但仅在记录级别,并且仅在您执行 COMMIT
.
之前
MySQL 8.0 将添加在事务中包含 DDL 语句(例如,DROP TABLE
)的功能。但是,同样,直到 COMMIT
.
将 COMMIT
视为冲洗回收站。
我正在使用 MardiaDB,我想知道是否有办法在我的服务器上安装一个 'recycle bin',如果有人删除了一个 table 或任何它被转移到回收站的东西bin 和恢复它很容易。
不是在谈论安装东西来恢复它和所有那些东西,而是在 'save place' 它被存储的地方(我有足够的 space),直到我决定删除它或只是保留它在那里 24 小时。
有什么想法吗?
不存在此类功能。 http://bugs.mysql.com 占用 "feature requests".
这样的功能必然涉及MySQL;它不能完全在 OS 的文件系统中完成。这是因为 运行 mysql 在 RAM 中缓存了 FS 不知道的信息。而且因为有关 table/db/proc/trigger/etc 的信息并不完全位于单个文件中。相反,额外的信息存在于其他更一般的文件中。
使用 MyISAM,您的目标在 fs 中是部分可能的。 MyISAM table 由 3 个文件组成:.frm
、.MYD',
.MYI`。在 fs 将 3 个文件移动到其他地方之前,MySQL 仍然需要刷新一些东西以忘记它知道 table。 MyISAM 即将消失;所以甚至不要考虑使用 'Engine'.
在 InnoDB 中,一个 table 由一个 .ibd
文件(如果使用 file_per_table)加上一个 .frm
文件,再加上公共 ibdata1
文件。如果table是PARTITIONed
,布局就比较复杂了。
在 8.0 版本中,前面的大部分内容将变得不正确 -- 发生重大变化。
"Transactions" 是一种撤消写入 table...
的方法BEGIN;
INSERT/UPDATE/DELETE/etc...
if ( change-mind )
then ROLLBACK;
else COMMIT;
实际上,撤消日志充当回收站 -- 但仅在记录级别,并且仅在您执行 COMMIT
.
MySQL 8.0 将添加在事务中包含 DDL 语句(例如,DROP TABLE
)的功能。但是,同样,直到 COMMIT
.
将 COMMIT
视为冲洗回收站。