当前位置: 首页 > 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;包括聚类、分类、推荐…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...