mogdb里xlog相关的几个参数
openGauss/MogDB 3.0 闪回恢复测试
本文出处:https://www.modb.pro/db/411368
介绍
闪回恢复功能是数据库恢复技术的一环,可以有选择性的撤销一个已提交事务的影响,将数据从人为不正确的操作中进行恢复。在采用闪回技术之前,只能通过备份恢复、PITR 等手段找回已提交的数据库修改,恢复时长需要数分钟甚至数小时。采用闪回技术后,恢复已提交的数据库修改前的数据,只需要秒级,而且恢复时间和数据库大小无关。
闪回支持两种恢复模式:
基于 MVCC 多版本的数据恢复(仅支持 Ustore):适用于误删除、误更新、误插入数据的查询和恢复,用户通过配置旧版本保留时间,并执行相应的查询或恢复命令,查询或恢复到指定的时间点或 CSN 点。
基于数据库回收站的恢复(仅支持 Ustore):适用于误 DROP、误 TRUNCATE 的表的恢复。用户通过配置回收站开关,并执行相应的恢复命令,可以将误 DROP、误 TRUNCATE 的表找回。 说明: 回收站暂不支持 Astore 引擎(闪回 DROP/TRUNCATE)。
测试环境
操作系统:centos7.6 x86
数据库版本:openGauss 3.0
数据库环境:单机
(在这里数据库安装过程省略),根据上述提到的两种恢复模式下面分别进行测试。
闪回查询和表
闪回查询可以查询过去某个时间点表的某个 snapshot 数据,这一特性可用于查看和逻辑重建意外删除或更改的受损数据。闪回查询基于 MVCC 多版本机制,通过检索查询旧版本,获取指定老版本数据。
前置条件
数据库配置文件 postgresql.conf 参数配置
enable_default_ustore_table=on ###开启默认支持Ustore存储引擎
undo_zone_count=16384 ###内存中可分配的undo zone数量,0代表禁用undo和Ustore表,建议取值为max_connections*4
undo_retention_time=2000 ###用于设置undo旧版本的保留时间,默认为0,单位s。
测试过程
---创建测试表并插入两条数据
openGauss=# create table u_tb (id int,c1 varchar(10));
CREATE TABLE
openGauss=# insert into u_tb values (1,'Aso'),(2,'Hocx');
INSERT 0 2
openGauss=# select clock_timestamp();
clock_timestamp
2022-06-02 16:21:38.123874+08
(1 row)
---再插入新数据
openGauss=# insert into u_tb values (3,'Ysad');
INSERT 0 1
openGauss=# select clock_timestamp();
clock_timestamp
2022-06-02 16:21:52.773089+08
(1 row)
---基于timestamp的闪回查询
openGauss=# SELECT * FROM u_tb TIMECAPSULE TIMESTAMP to_timestamp ('2022-06-02 16:21:38.123874', 'YYYY-MM-DD HH24:MI:SS.FF');
id | c1
----+------
1 | Aso
2 | Hocx
(2 rows)
openGauss=# select clock_timestamp();
clock_timestamp
2022-06-02 16:22:36.596661+08
(1 row)
---修改一行数据
openGauss=# update u_tb set id = 4 where id =3;
UPDATE 1
openGauss=# select * from u_tb;
id | c1
----+------
1 | Aso
2 | Hocx
4 | Ysad
(3 rows)
---查询timestamp对应的CSN
openGauss=# select snptime,snpcsn from gs_txn_snapshot where snptime between '2022-06-02 16:21:52.773089' and '2022-06-02 16:22:36.596661';
snptime | snpcsn
-------------------------------+--------
2022-06-02 16:22:36.330093+08 | 45012
2022-06-02 16:22:33.306022+08 | 45011
2022-06-02 16:22:30.279709+08 | 45010
2022-06-02 16:22:27.256441+08 | 45009
2022-06-02 16:22:24.232027+08 | 45008
2022-06-02 16:22:21.208859+08 | 45007
2022-06-02 16:22:18.181382+08 | 45006
2022-06-02 16:22:15.15771+08 | 45005
2022-06-02 16:22:12.132989+08 | 45004
2022-06-02 16:22:09.109973+08 | 45003
2022-06-02 16:22:06.086961+08 | 45002
2022-06-02 16:22:03.064702+08 | 45001
2022-06-02 16:22:00.042871+08 | 45000
2022-06-02 16:21:57.009696+08 | 44999
2022-06-02 16:21:53.985716+08 | 44998
(15 rows)
---基于CSN的闪回查询
openGauss=# SELECT * FROM u_tb TIMECAPSULE CSN 45009;
id | c1
----+------
1 | Aso
2 | Hocx
3 | Ysad
(3 rows)
---基于CSN的闪回表
openGauss=# TIMECAPSULE TABLE u_tb TO CSN 45009;
TimeCapsule Table
openGauss=# select * from u_tb;
id | c1
----+------
1 | Aso
2 | Hocx
3 | Ysad
(3 rows)
---基于timestamp的闪回表
openGauss=# TIMECAPSULE TABLE u_tb TO TIMESTAMP to_timestamp ('2022-06-02 16:21:38', 'YYYY-MM-DD HH24:MI:SS.FF');
TimeCapsule Table
openGauss=# SELECT * FROM u_tb;
id | c1
----+------
1 | Aso
2 | Hocx
(2 rows)
闪回 drop/truncate
闪回 DROP:可以恢复意外删除的表,从回收站(recycle bin)中恢复被删除的表及其附属结构如索引、表约束等。闪回 drop 是基于回收站机制,通过还原回收站中记录的表的物理文件,实现已 drop 表的恢复。
闪回 TRUNCATE:可以恢复误操作或意外被进行 truncate 的表,从回收站中恢复被 truncate 的表及索引的物理数据。闪回 truncate 基于回收站机制,通过还原回收站中记录的表的物理文件,实现已 truncate 表的恢复。
前置条件
enable_recyclebin=on ###启用回收站。 recyclebin_retention_time=30min ###参数用于设置回收站对象保留时间,超过该时间的回收站对象将被自动清理。
测试过程
---创建测试表
openGauss=# create table u_tb2 (id int,c1 varchar(10));
CREATE TABLE
openGauss=# insert into u_tb2 values (1,'Aso'),(2,'Hocx');
INSERT 0 2
openGauss=# select * from u_tb2;
id | c1
----+------
1 | Aso
2 | Hocx
(2 rows)
---truncate表
openGauss=# truncate u_tb2;
TRUNCATE TABLE
openGauss=# select * from u_tb2;
id | c1
----+----
(0 rows)
---闪回truncate操作
openGauss=# timecapsule table u_tb2 to before truncate;
TimeCapsule Table
openGauss=# select * from u_tb2;
id | c1
----+------
1 | Aso
2 | Hocx
(2 rows)
---误drop表
openGauss=# drop table u_tb2;
DROP TABLE
---查看回收站
openGauss=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN;
rcyname | rcyoriginname | rcytablespace
-------------------------------+---------------+---------------
BIN$3C774EBC071$23FB27078==$0 | u_tb2 | 0
(1 row)
---闪回drop表并且rename
openGauss=# timecapsule table u_tb2 to before drop rename to u_tb2_bak;
TimeCapsule Table
openGauss=# select * from u_tb2_bak;
id | c1
----+------
1 | Aso
2 | Hocx
(2 rows)
---删除表时不放到回收站
openGauss=# drop table u_tb2_bak purge;
DROP TABLE
---检查回收站
openGauss=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN;
rcyname | rcyoriginname | rcytablespace
---------+---------------+---------------
(0 rows)
总结 3.0 和 2.1 的区别
如果是 2.1 版本测试闪回查询和闪回表则需要配置参数 version_retention_age(设置旧版本保留的事务数,超过该事务数的旧版本将被回收清理),不是配置 undo_retention_time;在 3.0 版本中 version_retention_age 参数已被弃用,使用的参数就是 undo_retention_time(undo 旧版本保留时间)做闪回查询。回收站在 2.1 版本中对 Astore 表支持,在 3.0 中不再支持 Astore 表,而是 ustore 表才支持。
mogdb里xlog相关的几个参数的更多相关文章
- react中关于create-react-app2里css相关配置
先看 webpack.config.dev.js 里的相关代码: // style files regexes const cssRegex = /\.css$/; const cssModuleRe ...
- 从头说catalan数及笔试面试里那些相关的问题 (转)
作者:寒小阳 时间:2013年9月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/11938973. 声明:版权所有,转载请注明出处,谢谢 ...
- 解决kettle在两个mysql之间迁移数据时乱码的问题 和 相关报错 及参数调整, 速度优化
1. 乱码问题 编辑目标数据库的链接: 配置编码参数即可. 2. 报错 No operations allowed after statement closed. 需要调整wait_timeout: ...
- catalan数及笔试面试里那些相关的问题(转)
一.catalan数由来和性质 1)由来 catalan数(卡塔兰数)取自组合数学中一个常在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. 卡塔兰数的一般项 ...
- 【前端童鞋看过来!】给大家分享网盘里前端相关书籍,主要是和网络通信(HTTP/TCP/IP)及javascript相关的
百度云链接:https://pan.baidu.com/s/1kUPdf5H(无密码) 截图: <HTTP权威指南> [豆瓣书评]:此书第一部分是HTTP的概略,如果你没有时间,通读第一部 ...
- 掌握zigbee网络里的相关的重要概论
1.zigbee无线通信,需要高频的载波来提供发射效率,zigbee模块之间要可以正常的收发,必须把接收频率设置和发射模块的载波频率一致. 2.zigbee有27个载波可以进行通信,载波叫做信道(无线 ...
- Swift里计数相关的小细节
Swift里对于字符串这些引入了index型,相对其他语言而言字符操作更安全了,但是问题就是一不注意搞错范围就会有各种离奇的bug. 在讲主题前,先说个小细节. Swift里非常严密的定义了一大堆字符 ...
- 替换文件里的相关单词(一)之文件类型为txt
首先说一下详细的实现思路: 第一步:我们须要获取要改动文件的信息,我们能够通过文件的路径来获取文件的FileInputStream,即文件的输入流,然后调用InputStreamReader读取文件输 ...
- AbstractQueuedSynchronizer的使用和juc里的相关类的解析
对AQS进行解析后,先来实现两个简单的基于AQS的类,然后再解析juc里基于AQS构造的类. 1.基于AQS的类的示例 首先先看这个类,这个类是<Java并发编程实战>的一个示例,AQS源 ...
- NFS客户端访问行为相关的几个参数解释
soft / hard Determines the recovery behavior of the NFS client after an NFS request times out. If ne ...
随机推荐
- C++ //count_if //按条件统计元素个数 //自定义和 内置
1 //按条件统计元素个数 2 //count_if 3 4 #include <iostream> 5 #include<string> 6 #include<vect ...
- Dungeon Master 题解
这道题的题意简单来说:就是在3D迷宫里找出口,也就是三维地图,需要用到三维数组 由于本人写代码极易出错,所以在输入三维数组的时候修改了c(column,即列)的值,重复定义了没看到==,后面改成定义成 ...
- 微信小程序开发:页面分享卡片、风格选择、通道启用等可配置
上文说到,我们部署了定时任务,但是有个地方忘记在上文写了,这里补上,就是定时任务的超时时间问题,超时时间有7200秒: 我们改成7100秒: 再把云函数调用的云对象的超时时间也改下: 超时时间多一点, ...
- Socket编程:htons()、htonl()、ntohs()、ntohl()
前言 在计算机网络学到Socket编程的时候,自己在Linux下用C语言试验了一番,发现了这四个古怪的函数:htons().htonl().ntohs().ntohl(). 查阅资料得知,这是涉及到网 ...
- easy-window && aardio 桌面软件开发
https://github.com/lixk/easy-window https://gitee.com/zha2/easy-window https://www.aardio.com/ 桌面软件开 ...
- DatePicker 日期选择器 split-panels 数组的时候,清空这个费劲啊,最后走的后门
这里的核心问题就是验证的时候value值不对,总是初始化的值,不论怎么设置,开始觉得是数组指针的问题,最后也不行,null也不行,组件的props都已经是null了,验证就是这么神奇,最后把this放 ...
- Selenium IDE 自动化测试 bug 会在console里面出 DevTools failed to load SourceMap 很不好,用完记得关掉这个程序
Selenium IDE 自动化测试 bug 会在console里面出 DevTools failed to load SourceMap 很不好,用完记得关掉这个程序
- ubuntu spyder3 颜色重置为暗色
天杀的微软,爷用的是正版的专业版windows10还给爷推送个拿屁股作出来的系统 20H2 ,所有被强制更新的用户都不同程度的黑屏.卡顿.重启.还是ubuntu大法啊! 在ubuntu上换源下载vlc ...
- java方法的内存及练习
方法的内存 一.方法调用的基本内存原理: Java内存分配 栈: 方法运行时使用的内存方法进栈运行,运行完毕就出栈 堆: newl出来的,都在堆内存中开辟了一个小空间 方法区: 存储可以运行的clas ...
- 记录--图解 Vue 响应式原理
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 最近部门分享,有同学提到了 Vue 响应式原理,大家在讨论时,发现一些同学对这一知识理解还不够深入,不能形成一个闭环,为了帮助大家理解这个 ...