【openGauss】账本机制与闪回特性使用
创始人
2025-06-01 18:00:50
0

账本机制

对防篡改账本表进行数据增、删、改操作,系统会在历史表和全局表中记录行级数据变化追溯信息,操作的追溯信息,并通过密码学算法生成校验信息。通过对校验信息的保护、比对、验证,起到对重要数据的完整性保护,识别、阻止未授权更改。

1. 核心价值:

  • 易用:使用SCHEMA级别隔离,创建SCHEMA时指定账本属性,在该SCHEMA中创建的用户表自动成为账本;
  • 无感:账本表支持增、删、改、查,与普通表语法一致;
  • 可追溯:对账本表的数据修改,均会以hash变迁的形式在历史表中记录数据的变迁记录,以SQL的形式在全局表中记录数据操作;
  • 融合:账本表可以和其他表关联进行事务或查询;
  • 高并发:账本表中数据行与行之间无关联,可以支持并发更改。

账本表使用与普通表一样,支持全量的增、删、改、查操作,在用户看来,仅仅是普通表多增加了一列hash列。用户可以显式的查询每行数据的hash。

校验信息的记录(历史表和全局表):

  • 账本表的数据增删改操作均会被记录到历史表和全局表。
  • 记录到历史表的形式为只记录hash摘要,不记录数据;
  • 记录到全局表的形式为记录操作的SQL语句和操作造成的摘要更改。

2. 账本表使用:

账本表的底层存储类型需要是ASTORE,系统默认存储类型就是ASTORE,如果为了实现闪回将存储类型更改为了USTORE,然后要完成账本的话需要将USTORE改回ASTORE

# 退出数据库连接,在linux shell中执行以下命令进行更改
gs_guc set -N all -I all -c "enable_default_ustore_table=off";
# 更改完之后需要重启数据库才生效
gs_om -t restart
(1)创建防篡改特性的Schema

创建于该schema中的表数据账本表,系统会自动根据表名创建历史表,以及指定全局表,每个账本表都会有一个hash字段,记录系统生成的hash摘要,所以创建账本表时不能有名称hash的列(账本表的hash字段生成以及hash摘要生成、hash摘要存储都是系统自动操作不需要人为参与)

create schema chain_demo with blockchain;

可以使用 \dn+ 查看schema信息,其中withblockchain属性为t,表示这个schema是账本模式
在这里插入图片描述

(2)创建账本表
create table chain_demo.t1(c1 int);
(3)往账本表中插入数据
insert into chain_demo.t1 values(1),(2);

将2改成3

update chain_demo.t1 set c1=3 where c1=2;
(4)查看账本表数据
select *,hash from chain_demo.t1;

在这里插入图片描述

(5)查看历史表与全局表
  • 历史表
select * from blockchain.chain_demo_t1_hist;

在这里插入图片描述
系统会为每个账本表生成一个历史表,记录该账本表的hash变更记录,历史表都是存放在blockchain模式中,历史表的命名方式:schema名称_表名_hist
update将插入的第二条记录,也就是c1=2的数据更改成了c1=3,所以在历史表中可以看到第三步操作将第二部操作的hash删除同时新增了一个新的hash。

  • 全局表
select * from gs_global_chain;

在这里插入图片描述
在全局表中可以看到操作记录,已经该操作记录的操作者,时间,操作对象等信息,因为openGauss服务只有一个全局表,所有的账本表的操作信息都存储在一个表中,可以记录操作者、操作对象进行区分。

闪回特性

闪回概念是Oracle最先提出来的,其本质是为了回退错误操作产生的,避免人为的“灾难”,并且要能够快速回退。

1. 闪回查询

基于MVCC多版本的数据恢复:适用于误删除、误更新、误插入数据的查询和恢复,用户通过配置旧版本保留时间,并执行相应的查询或恢复命令,查询或恢复到指定的时间点或CSN点。

只有存储类型为ustore类型的表才支持闪回
在这里插入图片描述

前提条件:

  • enable_default_ustore_table=on --指定用户创建表时使用USTORE存储引擎。
  • undo_retention_time=600 --用于设置undo旧版本的保留时间,单位是s。
# 退出数据库连接,在linux shell中执行以下命令进行更改
gs_guc set -N all -I all -c "enable_default_ustore_table=on";
# 设置旧版本保留时间
gs_guc set -N all -I all -c "undo_retention_time=600";
# # 不能用reload刷新,使用set更改完之后重启数据库生效
gs_om -t restart

查询旧版本数据有两种方式,可以基于timestamp或者csn查看,timestamp值和csn值可以通过gs_txn_snapshot系统表获取

select * from gs_txn_snapshot;

在这里插入图片描述

  • 使用timestamp查看
select * from classes timecapsule timestamp '2023-03-22 16:29:59';

在这里插入图片描述

  • 使用csn查看
select * from classes timecapsule csn 9114;

在这里插入图片描述

2. 闪回恢复

基于类似windows系统回收站的恢复:适用于误DROP、误TRUNCATE的表的恢复。用户通过配置回收站开关,并执行相应的恢复命令,可以将误DROP、误TRUNCATE的表找回。

前提条件:

  • enable_default_ustore_table=on --指定用户创建表时使用USTORE存储引擎。
  • enable_recyclebin=on --用于启动回收站。
# 已经更改过的配置就不需要重复更改了
gs_guc set -N all -I all -c "enable_default_ustore_table=on";
# 启动回收站
gs_guc set -N all -I all -c "enable_recyclebin=on";
# # 不能用reload刷新,使用set更改完之后重启数据库生效
gs_om -t restart

(1)闪回drop

timecapsule table classes to before drop;

在这里插入图片描述

(2)闪回truncte

timecapsule table classes to before truncate;

在这里插入图片描述

相关内容

热门资讯

露营品牌全案设计 这是(snowboyyl)整理的信息,希望能帮助到大家 露营品牌全案设计 随着人们生活水平的提高,越...
江苏糊涂啊,泰州4个独一无二的... 江苏是文旅大省,也可以说是文旅强省,不过,一般来说,人们去江苏旅游,往往集中在苏南地区,尤其是苏州、...
泡百香果用什么酒最好呢?选对酒... 咱老百姓自己在家泡百香果酒,选啥酒那可是关键。选错了酒,不仅果酒不好喝,还可能影响健康。今天咱就唠唠...
别碰脐橙!除非你能忍住一口接一... 在水果的缤纷世界里,脐橙宛如一颗璀璨夺目的明星,散发着独特的魅力,吸引着无数食客为之倾心。这世上真的...
入夏后要养心!推荐七道家常菜,... 民间有句俗话,“春养肝,夏养心,秋养肺,冬养肾”,入夏后气温逐步地攀升,正是阳气旺盛的季节, 而中医...
原创 糖... 救命!我做的糖醋排骨被闺蜜说像"中药炖鞋底"!上周家庭聚餐的惨案至今让我抬不起头,那锅黑乎乎黏答答的...
龙岩泡鸭爪:酸辣开胃,追剧必备... 龙岩泡鸭爪作为福建龙岩的特色美食,凭借酸辣开胃的独特口感,成为深受大众喜爱的 “神仙零食”。本文从历...
零食大明星休闲零食加盟 共享美... 零食大明星休闲零食加盟 共享美味与商机 休闲零食,早已不再是简单的食品,而是成为了人们生活中不可或缺...
原创 炖... #炖汤时,加冷水还是热水?粤菜大厨教你一招,不放盐汤自然清甜! 在美食的天地里,炖汤宛如一首温柔的...
一个鸡蛋就能做出全家人都爱的汤... 鸡蛋汤是简单快捷的一道家常汤品,味道不仅鲜美可口,营养也十分丰富。Mis.Cai相信好多人都是无汤不...
原创 西... 很多游览西湖的游人,都会做攻略,并逐一打卡西湖十景,在杭州西湖那些富有诗意的西湖十景中,南屏晚钟是最...
走进长春!120个网红打卡地之... 2024年,长春在100个网红打卡地发布基础上又一次解锁20个新晋网红打卡地,长春网红打卡地增至12...
我是长沙人,去了趟四川成都,有... 我们全家都是土生土长的长沙人,辣椒炒肉是我们的灵魂。说来也怪,我对成都一直有种莫名的亲切感,可能是因...
游客:饭店门口停车遭多人殴打 ... 游客与饭店老板发生冲突的画面。 视频截图近日,有游客反映称,其于端午节假期与家人在安徽泾县旅游时,因...
原创 炖... **《炖玉米排骨汤时到底放不放花椒,20年一直做错了,难怪汤不鲜!》** 在美食的世界里,一道看似...
原创 白... #白菜别再炖粉条了,试试这种方法,简单又美味,连吃一个月都不腻 在厨房的小天地里,白菜一直是冬日餐...
原创 如... #如何用烤箱烤排骨?简单一学,教会老婆 在美食的浩瀚星空中,烤排骨犹如一颗璀璨星辰,散发着令人难以...