当前位置: 首页 > news >正文

【金仓数据库产品体验官】KES-ORACLE兼容模式再体验之FLASHBACK

前面第一篇我们已经写过一篇金仓数据库ORACLE兼容模式体验官文章了(文章地址:https://blog.csdn.net/LFCuiYs/article/details/151025150?spm=1001.2014.3001.5502)

这次体验一下闪回特性,接下来再次进行登录验证连接:

一、FLASHBACK 功能概述

KingbaseES 提供了闪回(FLASHBACK)功能,允许用户查询历史数据或将表恢复到特定时间点。主要功能包括:

  • 闪回查询(Flashback Query)

  • 闪回表(Flashback Table)

  • 闪回回收站(Flashback Drop)

FLASHBACK 命令用于闪回一个回收站中的表或者将该表闪回至一个历史的快照时刻。

前置条件:

回收站功能默认关闭,只有开启了参数才能将表放置到回收站中,参数名称:kdb_flashback.db_recyclebin,参数为bool类型,参数级别为pgc_sighup。

开启了回收站参数后,如果不允许一个删除的表进回收站,需要在DROP语句后面加上PUGREX 选项。

FLASHBACK支持将一个已经删除到回收站中的表及相关对象闪回到删除之前状态。

 Recyclebin视图:

cb0fd0ea-dcfc-413b-9e4f-7b7c72825c65.png

0ce287c1-368c-44e8-9bb6-388ead23025b.png

sys_recyclebin视图在开启回收站功能,存储用户删除的表信息,用于删除表闪回使用。

057634c8-37ec-42a8-8c97-b68e46267de5.png

548d8434-9d53-4b75-8060-4027dba22b20.png

如果在当前SCHEMA下已经存在同名的表,则闪回失败,需要使用RENAME TO选项指定一个新的表名。成功闪回一个表后,回收站视图recyclebin和回收站系统表sys_recyclebin中对象将被清除。

闪回表至历史时刻,基于闪回查询将被操作表的数据还原到指定的快照时刻,该操作基于AS OF 闪回查询和当前快照数据的差异进行还原。闪回表至历史时刻可以通过时间戳(timestamp)、csn两种方式进行指定。闪回表的过程中默认关闭触发器行为,如果期望开启的话请通过ENABLE TRIGGERS 语句进行。

关于插件kdb_flashback:

插件kdb_flashback是KingbaseES 的一个扩展插件。主要功能是提供错误数据的快速恢复能力,目前提供的闪回技术包括闪回回收站,闪回查询,闪回版本查询,闪回到任意时间点。

插件kdb_flashback加载方式:

KingbaseES数据库默认将他添加到 kingbase.conf 文件的 shared_preload_libraries 中,重启数据库时自动加载。

63a670c9-d561-4ce9-8588-5c043dbc0bd7.png

插件kdb_flashback的参数配置

kdb_flashback.enable_flashback_query    闪回查询的开启参数,默认开启。

kdb_flashback.db_recyclebin   闪回回收站开启参数,参数为bool类型,参数级别为PGC_SIGHUP,默认关闭。

9c1eb46d-e70f-4dae-ba02-cc74cd3aabae.png

插件kdb_flashback的使用方法

闪回查询相关的技术使用方法

  • 整个闪回技术(闪回查询和闪回表到指定时间点) 可以通过时间戳和CSN(commit sequence number) 两种方式进行。

  • 两种方式目前都需要依赖提交的时间戳,因此需要开启track_commit_timestamp 这个参数。另外闪回查询还需要开启kdb_flashback.enable_flashback_query      的参数。

  • 闪回查询技术有一定的限制,在数据进行深度清理后和部分schema change 后将拒绝闪回查询(具体参考闪回查询须知)。

二、FLASHBACK 语法

FLASHBACK TABLE table_name TO

{ [ BEFORE DROP [ RENAME TO newname ] ] |

    [ { TIMESTAMP | CSN | SCN } asof_item [ { ENABLE | DISABLE } TRIGGERS ] ]}

image.png



 

三、FLASHBACK 测试

1. 闪回查询(Flashback Query)

SELECT * FROM table_name AS OF {TIMESTAMP | CSN} time_value [WHERE conditions]; 
-- 创建测试表
CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(50),salary NUMERIC
);-- 插入初始数据
INSERT INTO employees VALUES (1, '张三', 5000);
INSERT INTO employees VALUES (2, '李四', 6000);-- 记录当前时间
SELECT now() AS current_time;

进行DDL操作:以及根据时间节点进行闪回查询:

根据CSN进行闪回查询:

可以正常获得想要的结果。

2. 闪回表(Flashback Table)

FLASHBACK TABLE [schema.]table_name TO {TIMESTAMP | CSN} time_value [ENABLE TRIGGERS]; 
test=# CREATE TABLE employees (
test(#     id INT PRIMARY KEY,
test(#     name VARCHAR(50),
test(#     salary NUMERIC
test(# );
CREATE TABLE
test=# INSERT INTO employees VALUES (1, '张三', 5000);
INSERT 0 1
test=# INSERT INTO employees VALUES (2, '李四', 6000);
INSERT 0 1
test=# SELECT now() AS recovery_time;recovery_time
-------------------------------2025-09-27 21:29:55.412734+08
(1 row)test=# UPDATE employees SET name = '错误的修改';
UPDATE 2
test=# DELETE FROM employees WHERE id = 1;
DELETE 1
test=# FLASHBACK TABLE employees TO TIMESTAMP '2025-09-27 21:29:55';
FLASHBACK TABLE
test=# select * from employees;id | name | salary
----+------+--------1 | 张三 |   50002 | 李四 |   6000
(2 rows)

可以看到能够达到预期效果。

3. 闪回回收站(Flashback Drop)

FLASHBACK TABLE [schema.]table_name TO BEFORE DROP [RENAME TO new_table_name]; 

回收站功能默认关闭,可以通过下列命令查看是否开启回收站功能:

show kdb_flashback.db_recyclebin;

image.png

开启回收站功能,在登录数据库后执行以下命令即可

alter system set kdb_flashback.db_recyclebin = on;#上文已开启,本步骤可以省略。

从回收站恢复表

开启了回收站参数后,如果不允许一个删除的表进回收站,需要在DROP语句后面加上PUGREX选项。flashback支持将一个已经删除到回收站中的表及相关对象闪回到删除之前状态。

如果在当前schema下已经存在同名的表,则闪回失败,需要使用rename to选项指定一个新的表名。 成功闪回一个表后,回收站视图recyclebin和回收站系统表sys_recyclebin中对象将被清除。

一个FLASHBACK命令:

FLASHBACK TABLE TABLE_name TO BEFORE DROP;

这个命令将在回收站中的TABLE_name闪回到闪回之前的状态:

FLASHBACK TABLE TABLE_name TO BEFORE DROP RENAME TO newname;

将回收站中的表闪回到一个新的表名:要将删除的表放到回收站需要在kingbase.conf配置文件末尾添加kdb_flashback.db_recyclebin=on。

image.png

image.png

image.png

可以看到能过正常闪回之前删除的表。

PS:purge recyclebin; ##情况回收站,请谨慎操作。

总结:

在日常运维工作中,我们可以充分利用KingbaseES的闪回功能,大幅提高数据库操作的容错能力和数据安全性。运维效率革命性提升:

  • 分钟级恢复:将传统小时级的数据恢复缩短至秒级。
  • 精准操作回退:无需全库恢复即可撤销特定错误操作。
  • 零停机维护:在业务高峰期安全执行高风险数据变更。

http://www.dtcms.com/a/415517.html

相关文章:

  • ReVanced Patches - Android应用功能增强补丁集
  • php制作网站用什么软件影视网站源码下载
  • Vala编程语言高级特性-参数方向
  • 网站开发有什么用图片编辑器免费
  • 通义万相Wan2.5模型实测,可生成音画同步视频
  • 电子商务网站开发费用调研报告网络营销方式思维导图
  • dll网站服务推荐电商网站建设
  • gRPC-Go - 高性能 gRPC 框架的 Go 实现
  • 将Gowin高云FPGA仿真库导入Modelsim中并编译
  • 百姓网网站源码宜宾网站建设价格
  • 手机版网站案例云南网上工商办事大厅
  • SpringBoot项目Excel成绩录入功能详解:从文件上传到数据入库的全流程解析
  • Excel批量导入到数据库的方法
  • 开发网站定制珠海柏泰教育官方网站建设
  • 出版物级标记语言解析
  • 集合划分:用元素交换法破解等和难题
  • 培训建设网站深圳建站公司
  • 网站规划与建设规划书wordpress个性时光轴主题
  • 个人网站备案幕布网易梦幻西游手游官方网站下载
  • 数据集 - Al-Maktabah-Al-Shamilah (伊斯兰典籍全集)
  • uC/OS-III 队列(Queue)操作
  • 速度即排名:90分以下=谷歌流量流失?
  • 企业网站空间选择什么网站可以找人做设计
  • 网站建设如何快速增加用户中山企业网站建设公司
  • 工业4.0下的边缘存储设计:数据就地处理,响应更快更安全
  • 做情诗网站私有云 搭建wordpress
  • 上海定制app开发公司杭州seo关键词优化公司
  • Photoshop - Photoshop 根据需要以最佳格式保存照片
  • 11-Redis 集合类型深度指南:从去重特性到集合运算场景落地
  • 【Redis】超级超市的仓库管理系统