金仓数据库KingbaseES中闪回回收站
关键字:
KingbaseES、闪回回收站、flashback、人大金仓
闪回回收站
在使用KingbaseES数据库时,可能会意外删除一些数据或数据库对象,可能是由于误操作、意外的数据丢失、或者其他不可预知的情况。为了应对这类情况,KingbaseES引入了闪回回收站,闪回回收站功能为用户提供一种误删表后还原表的一种手段,闪回回收站具有实时备份的功能,它利用快照技术实时记录用户对数据的操作,迅速备份,闪回回收站分为将回收站中的表闪回到删除之前的状态和清空回收站。
前置条件
在KingbaseES数据库中,闪回回收站是默认关闭的,需要手动开启,参数名称:kdb_flashback.db_recyclebin,参数为bool类型。需要注意,开参数开启后需要利用sys_reload_conf函数重新加载一下,使其生效。如下:
test=# alter system set kdb_flashback.db_recyclebin = on;
ALTER SYSTEM
test=# show kdb_flashback.db_recyclebin;
kdb_flashback.db_recyclebin
-----------------------------
off
(1 row)
test=# select sys_reload_conf();
sys_reload_conf
-----------------
t
(1 row)
test=# show kdb_flashback.db_recyclebin;
kdb_flashback.db_recyclebin
-----------------------------
on
(1 row)
闪回回收站实例
- 从闪回回收站中还原表
test=# create table a (id int);
CREATE TABLE
test=# insert into a values(1),(2),(3);
INSERT 0 3
test=# select * from a;
id
----
1
2
3
(3 rows)
test=# drop table a;
DROP TABLE
创建以上表,并将该表删除,该表就会被放置到回收站当中。利用FLASHBACK TABLE将该表闪回至被删除之前的时刻。
test=# flashback table a to before drop;
FLASHBACK TABLE
test=# select * from a;
id
----
1
2
3
(3 rows)
- PURGE操作
回收站需用户定期维护,避免回收站膨胀,用户可以通过PURGE操作对回收站进行维护,PURGE操作分为删除回收站中一个指定表和清空回收站。 清理回收站时,回收站视图recyclebin和系统表sys_recyclebin中相关对象将被清除。
删除回收站中的表:
test=# select * from recyclebin;
oid | original_name | droptime | type
-------+---------------+-------------------------------+-------
16387 | a | 2023-08-30 10:54:29.303087+08 | TABLE
16390 | b | 2023-08-30 10:54:31.880034+08 | TABLE
16393 | c | 2023-08-30 10:54:34.276670+08 | TABLE
(3 rows)
test=# purge table a;
PURGE
test=# select * from recyclebin;
oid | original_name | droptime | type
-------+---------------+-------------------------------+-------
16390 | b | 2023-08-30 10:54:31.880034+08 | TABLE
16393 | c | 2023-08-30 10:54:34.276670+08 | TABLE
(2 rows)
清空回收站:
test=# purge recyclebin;
PURGE
test=# select * from recyclebin;
oid | original_name | droptime | type
-----+---------------+----------+------
(0 rows)
关掉闪回回收站之后,删除表时,表将不会进入回收站,如下:
test=# alter system set kdb_flashback.db_recyclebin = off;
ALTER SYSTEM
test=# show kdb_flashback.db_recyclebin;
kdb_flashback.db_recyclebin
-----------------------------
on
(1 row)
test=# select sys_reload_conf();
sys_reload_conf
-----------------
t
(1 row)
test=# show kdb_flashback.db_recyclebin;
kdb_flashback.db_recyclebin
-----------------------------
off
(1 row)
test=# drop table a;
DROP TABLE
test=# select * from recyclebin;
oid | original_name | droptime | type
-----+---------------+----------+------
- (0 rows)
总结
通过使用闪回回收站,我们可以轻松地恢复已被删除的数据和对象,而无需依赖传统的备份和恢复方法。闪回回收站为我们提供了一种更加灵活。快速的数据恢复机制,帮助我们应对误操作、数据丢失等情况。
在使用闪回回收站时,需要注意以下几点:确保闪回回收站已启用;了解如何使用闪回查询来检索被删除的数据;能够利用闪回查询将数据完全恢复。
总之,闪回回收站是一个非常有用的特性,可以大大简化数据恢复的过程,提高数据库的可靠性和可用性,在日常操作和管理数据时,合理利用闪回回收站将能帮助我们更好地保护数据,提高工作效率。