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

南大通用数据库-Gbase-8a-学习-37-delete误删数据恢复方法

一、前提

在delete误删数据之后,没有再对此表进行其他ddl、dml和load等操作,可以使用手动切换AB版本的方式来进行数据恢复。

二、环境

名称
CPUIntel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz
操作系统CentOS Linux release 7.9.2009 (Core)
内存3G
逻辑核数2
Gbase8a版本8.6.2-R43.34.27468a27

我这边只有一个节点,且没有备份。

[gbase@czg2 t1_n1.GED]$ gcadmin
CLUSTER STATE:  ACTIVE
CLUSTER MODE:   NORMAL=====================================================================
|               GBASE COORDINATOR CLUSTER INFORMATION               |
=====================================================================
|   NodeName   |       IpAddress       |gcware |gcluster |DataState |
---------------------------------------------------------------------
| coordinator1 |    192.168.142.12     | OPEN  |  OPEN   |    0     |
---------------------------------------------------------------------
=================================================================
|                GBASE DATA CLUSTER INFORMATION                 |
=================================================================
|NodeName |       IpAddress       |gnode |syncserver |DataState |
-----------------------------------------------------------------
|  node1  |    192.168.142.12     | OPEN |   OPEN    |    0     |
-----------------------------------------------------------------
[gbase@czg2 t1_n1.GED]$ gcadmin showdistributionDistribution ID: 1 | State: new | Total segment num: 1Primary Segment Node IP                           Segment ID         Duplicate Segment node IP
========================================================================================================================
|    192.168.142.12                              |       1          |                                                  |
========================================================================================================================

三、实验

1、建表插数(gccli)

gbase> create table t1 (c1 int,c2 varchar(100));
Query OK, 0 rows affected (Elapsed: 00:00:00.16)gbase> insert into t1 values(1,'czg');
Query OK, 1 row affected (Elapsed: 00:00:00.14)gbase> insert into t1 values(2,'zxj');
Query OK, 1 row affected (Elapsed: 00:00:00.01)

2、delete数据(gccli)

gbase> delete from czg.t1 where c1 in (1);
Query OK, 1 row affected (Elapsed: 00:00:00.05)

3、查看元数据信息

我们切换到t1表的元数据目录,元数据是分A、B两个版本,table.delete.A是做过delete操作才会有的。

[gbase@czg2 t1_n1.GED]$ pwd
/opt/gnode/userdata/gbase/czg/metadata/t1_n1.GED
[gbase@czg2 t1_n1.GED]$ ll
总用量 44
-rw------- 1 gbase gbase 129 8月   8 08:59 C00000.ctl.A
-rw------- 1 gbase gbase 129 8月   8 08:59 C00000.ctl.B
-rw------- 1 gbase gbase 106 8月   8 08:59 C00000.map
-rw------- 1 gbase gbase 113 8月   8 08:59 C00001.ctl.A
-rw------- 1 gbase gbase 113 8月   8 08:59 C00001.ctl.B
-rw------- 1 gbase gbase 106 8月   8 08:59 C00001.map
-rw------- 1 gbase gbase  26 8月   8 09:11 table.delete.A
-rw------- 1 gbase gbase 237 8月   8 09:11 table.des.A
-rw------- 1 gbase gbase 237 8月   8 08:59 table.des.B
-rw------- 1 gbase gbase  52 8月   8 09:11 table.state.A
-rw------- 1 gbase gbase  52 8月   8 08:59 table.state.B

两个版本我们怎么确认此表当前用的是哪个版本呢,上面的目录中没有lock文件,表示用的版本A。如果有的话,表示用的版本B。

[gbase@czg2 t1_n1.GED]$ metadump table.state.A
This tool is designed for use at GBase internally,and is unsupported externally.
GBase makes no claims and holds no liability regarding the external use of this tool.
This tool is copyrighted and his redistribution is restricted.
table.state.A
+-------------------------------------+-----------------+
| TABLE_STATE_VERSION                 | 65536           |
| sizeof(int)                         | 4               |
| self_version                        | 1               |
| TABLE_STATE_TABLE_INFO              | 196608          |
| sizeof(int) + sizeof(uint64)        | 12              |
| table_scn                           | 7471108         |
| table_last_operation                | DELETE          |
| TABLE_STATE_TABLE_VERSION           | 131072          |
| sizeof(int)*3                       | 12              |
| ctl_version                         | B               |
| des_version                         | A               |
| delete_version                      | A               |
+-------------------------------------+-----------------+

查看A版本此表元数据信息,主要看几个点table_last_operation:delete,table_scn:7471108。

4、数据字典表查看scn(gncli)

[gbase@czg2 t1_n1.GED]$ gncli GBase client 8.6.2-R43.34.27468a27. Copyright (c) 2004-2023, GBase.  All Rights Reserved.gbase> select table_schema,table_name,scn from information_schema.tables where table_schema='czg' and table_name='t1_n1';
+--------------+------------+---------+
| table_schema | table_name | scn     |
+--------------+------------+---------+
| czg          | t1_n1      | 7471108 |
+--------------+------------+---------+
1 row in set (Elapsed: 00:00:00.01)

通过数据字典表查看scn号为7471108 和上面能够对应上。

5、备份元数据目录

[gbase@czg2 metadata]$ cp -r t1_n1.GED t1_n1.GED_BAK

6、切换AB版本

两个方法选其中一个即可,我这边用的是第一种进行测试验证。

(1)执行SQL的方式(gncli )

我这边删除的数据只涉及一个分片n1,而且没有备份分片,如果实际情况中涉及了多个分片或有备份分片,也都需要执行SQL。

[gbase@czg2 t1_n1.GED]$ gncli GBase client 8.6.2-R43.34.27468a27. Copyright (c) 2004-2023, GBase.  All Rights Reserved.gbase> revert table czg.t1_n1 scn_number 7471108;
Query OK, 0 rows affected (Elapsed: 00:00:00.09)

(2)操作lock文件的方式

上面我们说过:没有lock文件,表示用的版本A。如果有的话,表示用的版本B。

我们是A版本,切换到B版本,所以touch一个lock文件即可。反之删除lock文件即可。

7、刷新误删除表(gccli)

[gbase@czg2 t1_n1.GED]$ gccli GBase client 8.6.2-R43.34.27468a27. Copyright (c) 2004-2023, GBase.  All Rights Reserved.gbase> refresh table czg.t1;
Query OK, 0 rows affected (Elapsed: 00:00:00.01)

8、验证恢复情况

gbase> select * from czg.t1;
+------+------+
| c1   | c2   |
+------+------+
|    1 | czg  |
|    2 | zxj  |
+------+------+
2 rows in set (Elapsed: 00:00:00.10)

相关文章:

南大通用数据库-Gbase-8a-学习-37-delete误删数据恢复方法

一、前提 在delete误删数据之后,没有再对此表进行其他ddl、dml和load等操作,可以使用手动切换AB版本的方式来进行数据恢复。 二、环境 名称值CPUIntel(R) Core(TM) i5-1035G1 CPU 1.00GHz操作系统CentOS Linux release 7.9.2009 (Core)内存3G逻辑核数…...

【高光谱图像的去噪算法】通过全变异最小化对受激拉曼光谱图像进行去噪研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

UEditorPlus v3.3.0 图片上传压缩重构,UI优化,升级基础组件

UEditor是由百度开发的所见即所得的开源富文本编辑器,基于MIT开源协议,该富文本编辑器帮助不少网站开发者解决富文本编辑器的难点。 UEditorPlus 是有 ModStart 团队基于 UEditor 二次开发的富文本编辑器,主要做了样式的定制,更符…...

百度翻译API整合SpringBoot

案例背景,按照官方给的Demo,实在是太啰嗦了, 大致步骤 封装数据>签名>发送请求, 仔细一看劈里啪啦一大堆,最后还要手动关流关连接,难道整合到SpringBoot项目里面我还得为内存管理考虑 所以就有了如下需求 使用 RestTemplate的对象进行发送请求数据,RestTemplate由s…...

Spring @Primary、@Order、JSR @Priority作用与区别

前言 Primary、Order、Priority三个注解很常见,关于它们的异同,这里做个总结。 Primary、Order、Priority Primary Spring Primary控制注入优先级。 Order Spring Order控制注入到List中的排序,值越小优先级越高,不能是负数&am…...

【Mac】mac 系统下格式化U盘或移动硬盘为ext4格式

1. 打开终端,安装 homebrew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"2. 安装之后再次运行此命令 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"…...

ubuntu20.4 sgx环境配置

一、driver安装 1.在该下载地址将3个.bin文件下载下来,下载地址:https://download.01.org/intel-sgx/latest/linux-latest/distro/ubuntu20.04-server/ 2.到下载文件夹下输入下面命令,以赋予.bin文件的执行权限 sudo chmod 777 sgx_linux_x64…...

01.图片下拉触底分页加载每张图片

需求点分析 图片列表滚动触底的逻辑 将图片id组成的一维数组根据指定个数一组拆分为二维数组定义一个索引初始值为-1,图片列表滚动触底,索引值自增,然后将拆分好的图片id二位数组对应的数据读出来放到图片id的数组图片根据列表新增的id取读取…...

“精准学习嵌入式开发:明确目标,提升技能“

嵌入式领域涵盖广泛,不可能一次性掌握所有知识。因此,明确学习目标和方向非常重要。选择感兴趣且与职业发展相关的领域进行深入学习是明智之举。 嵌入式技术在不断发展,过去与现在存在差异。选择学习当前行业的主流技术和趋势是明智选择。掌…...

C语言--联合体-共用体

有时候同一个内存空间存放类型不同,不同类型的变量共享一块空间 像结构体,但是有区别 1、 结构体元素有各自单独空间, 共用体元素共享空间,空间大小由最大类型确定 同一块空间,有时候存放char类型、有时候存放int型&am…...

echarts实现中国地图下钻进入下一级行政区(地图钻取)

获取geo数据: 可以使用node爬虫获取数据 最好多爬几遍,因为有时候会获取错误 实现逻辑 拥有geo数据后 请求geo数据注册地图 registerMap配置echarts增加事件监听(点击事件) 如果点击了,回到第一步。功能就是循环以…...

从0到1学会手写操作系统,我只用了2个小时

黑马嵌入式教程再出力作 重磅发布第三弹 《自己动手写嵌入式操作系统》 问:嵌入式开发不是只学单片机就行?为什么要学操作系统? 答:年轻人,别把路走窄了。且听我说↓↓↓ 嵌入式产品分为两大类:一类简单…...

软件包管理

一、rpm管理软件包 1、获得rpm的软件包 1)去官网安装不推荐 找自己光盘有没有这个包 装好需要的包之后装qq 2)去镜像站点,推荐 二、yum/dnf管理软件包 解决软件的依赖关系,可以自动的去服务器下载软件包 1、使用yum软件包 使用…...

【逗老师的PMP学习笔记】9、项目资源管理

目录 一、规划资源管理1、【关键工具】责任分配矩阵RACI矩阵2、【关键工具】组织理论2.1、马斯洛需求层次理论2.2、麦格雷戈-X-Y理论2.3、赫兹伯格双因素理论 3、【关键输出】资源管理计划4、【关键输出】团队章程 二、估算活动资源1、【关键输入】资源日历 三、获取资源1、【关…...

react-virtualized可视化区域渲染的使用

介绍 github地址:https://github.com/bvaughn/react-virtualized 实例网址:react-virtualized如果体积太大,可以参考用react-window。 使用 安装: yarn add react-virtualized。在项目入口文件index.js中导入样式文件&#xff…...

navicat连接postgresql报错

navicat连接postgresql报错 navicat连接postgresql报错 现象 有小伙伴告诉我 安装了新的postgresql 使用navicat连接,报错 ERROR: column "datlastsysoid" does not existLINE 1: SELECT DISTINCT datlastsysoid FROM pg database column “datlastsy…...

题目:灾后重建

【题目描述】 B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响。但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车。换句话说,只有连接着两个重建完成的村庄的公路才能通车&#xff…...

Vue 插槽 slot

solt 插槽需要分为 2.6.0 版本以上和 2.6.0版本以下。 2.6.0 版本以下的 slot 插槽在,2.x版本将继续支持,但是在 Vue 3 中已被废弃,且不会出现在官方文档中。 作用 插槽 prop 允许我们将插槽转换为可复用的模板,这些模板可以基于…...

【C/C++】C语言位图操作实例(亲测)

C语言中的位图操作通常用于处理大量的二进制数据&#xff0c;例如图像处理、压缩算法等。以下是一些C语言中的位图操作实例&#xff1a; 设置位图中的某一位 void set_bit(unsigned char *bitmap, int bit) {bitmap[bit / 8] | (1 << (bit % 8)); }这个函数将位图中的第…...

Mahout教程_编程入门自学教程_菜鸟教程-免费教程分享

教程简介 Mahout 是 Apache Software Foundation&#xff08;ASF&#xff09; 旗下的一个开源项目&#xff0c;提供一些可扩展的机器学习领域经典算法的实现&#xff0c;旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现&#xff0c;包括聚类、分类、推荐…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...