【openGauss】物理备份恢复

文章目录

    • 1. gs_backup
        • (1)备份
        • (2)恢复
        • (3)手动恢复的办法
    • 2. gs_basebackup
        • (1)备份
        • (2)恢复
          • ① 伪造数据目录丢失
          • ② 恢复
    • 3. gs_probackup
        • (1)开启增量功能
        • (2)初始化备份存储路径
        • (3)添加备份实例
        • (4)添加备份配置
        • (5)执行全量备份
        • (6)增量备份
        • (7)合并备份
        • (8)备份恢复

数据库物理备份是指直接备份数据库的物理文件,包括数据文件、日志文件、控制文件等,而不是通过逻辑方式(如SQL语句)导出数据。物理备份是对数据库底层文件的完整复制,通常用于快速恢复数据库到某个时间点的状态。

物理备份的特点

  1. 备份速度快:物理备份直接复制文件,通常比逻辑备份(如导出SQL语句)更快。
  2. 恢复速度快:恢复时直接替换文件,不需要重新执行SQL语句。
  3. 完整性高:备份的是数据库的完整状态,包括数据文件、日志文件等,适合大规模数据恢复。

1. gs_backup

openGauss部署成功后,在数据库运行的过程中,会遇到各种问题及异常状态。openGauss提供了gs_backup工具帮助openGauss备份、恢复重要数据,主要目的是避免某个节点出现二进制文件(工具脚本)、配置文件丢失。

语法结构:

gs_backup -t 执行方式(备份/恢复) --backup-dir=备份/恢复目录 --parameter

前提条件

  • 可以正常连接openGauss数据库。
  • 在进行还原时,需要保证各节点备份目录中存在备份文件。
  • 需以操作系统用户omm执行gs_backup命令。
(1)备份

① 备份参数文件,可以指定–parameter或者不指定,不指定的情况下默认就是备份参数文件

gs_backup -t backup --backup-dir=/home/omm/backup --parameter
# -t:指定备份或恢复
# --backup-dir:备份/恢复文件所存放路径(最后一级目录可不存在,如果不存在系统自动创建)
# -h:备份的节点,如果不指定就备份整个集群所有节点
# -- parameter(默认):备份postgresql.conf,pg_hba.conf文件
# -- binary:备份工具脚本
# -- all:备份postgresql.conf,pg_hba.conf和工具脚本文件

在这里插入图片描述

查看备份得到的参数文件,因为没有指定-h,系统默认备份整个集群所有节点,所以加压压缩包后会得到又一层压缩包文件,每个压缩包为一个节点的,比如当前节点为node1,将parameter.tar加压后会得到一个parameter_node1.tar文件

cd /home/omm/backup
tar xvf parameter.tar
# 查看解压后得到的新压缩文件名称
ls
# 解压指定节点的压缩包
tar xvf parameter_hostname.tar

在这里插入图片描述

② 备份二进制文件(备份app目录下的工具文件)

gs_backup -t backup --backup-dir=/home/omm/backup --binary

在这里插入图片描述

跟备份参数文件一样的,会得到一个集群二进制文件的压缩包,binary.tar,解压后得到各个节点的二进制文件压缩包binary_hostname.tar

cd /home/omm/backup
tar xvf binary.tar
# 查看解压后得到的新压缩文件名称
ls
# 解压指定节点的压缩包
tar xvf binary_hostname.tar

在这里插入图片描述

查看备份的二进制文件信息

# 此实验中app名称为app_b035fd
ls app_33b035fd/bin

在这里插入图片描述

③ 当指定备份all时,相当于同时指定–parameter和–binary

# 为了更清晰的了解备份内容,将前面两个操作备份和解压文件全部移除(文件存在会自动覆盖,这里是为了明确了解不同参数备份的文件内容)
rm -rf /home/omm/backup/*
# 执行备份
gs_backup -t backup --backup-dir=/home/omm/backup --all

在这里插入图片描述

(2)恢复

当数据库出现参数文件、二进制文件丢失时,可以基于之前备份的文件进行恢复

gs_backup -t restore --backup-dir=/home/omm/backup --all
# -h 备份的节点,如果不指定就备份整个集群所有节点
# -- parameter(默认):备份postgresql.conf,pg_hba.conf文件
# -- binary:备份工具脚本
# -- all:备份postgresql.conf,pg_hba.conf和工具脚本文件
# -- force:强制restore,仅限于--all或--binary时才生效

在这里插入图片描述

(3)手动恢复的办法
  • pg_hba.conf可以手动从正常节点上复制,然后修改客户端认证策略

  • postgresql.conf可以通过调用gs_om重写生成(需要借助xml文件)

  • 二进制文件可以手动从正常节点上复制

2. gs_basebackup

openGauss部署成功后,在数据库运行的过程中,会遇到各种问题及异常状态。openGauss提供了gs_basebackup工具做基础的物理备份。gs_basebackup的实现目标是对服务器数据库文件的二进制进行拷贝。

远程执行gs_basebackup时,需要使用系统管理员账户。

gs_basebackup当前支持热备份模式和压缩格式备份模式。

gs_basebackup目前仅支持全量备份,恢复需要手动恢复

语法结构:

gs_basebackup -D 备份路径(目录) -p port
# -D:备份文件存放路径,路径必须存在,且必须为空

如果备份目录不存在会报如下异常:

在这里插入图片描述

如果备份目录不为空会报如下异常:

在这里插入图片描述

(1)备份
gs_basebackup -D /home/omm/backup/basebackup -p 15400
# 如果环境变量中配置过端口,可以不指定-p

在这里插入图片描述

当数据库中存在绝对路径的表空间时,需要手动为对应表空间配置映射路径

伪造异常场景(存在绝对路径表空间)

gsql -p 15400 -d postgres -r

在数据库中创建表空间

# 创建表空间
create tablespace tbs1 location '/home/omm/tbs1';
# 创建表
create table t1(c1 int) tablespace tbs1;
# 给t1表添加数据
insert into t1 values(1);

在这里插入图片描述

退出数据库连接(\q)再重新执行备份

# 清空备份路径,否则会出现异常
rm -rf /home/omm/backup/basebackup/*
# 执行备份
gs_basebackup -D /home/omm/backup/basebackup -p 15400

在这里插入图片描述

根据异常信息可以看到因为/home/omm/tbs1目录不为空导致备份异常,就是某个绝对路径表空间没有指定空的映射路径(空的)导致的

gs_basebackup -D /home/omm/backup/basebackup -p 15400 -T /home/omm/tbs1=/home/omm/backup/basebackup/tbs1
# -T old_dir=new_dir:为旧路径指定映射新路径
# 当数据目录异常,目录权限异常无法恢复,数据目录不存在
# 手动造成数据目录异常的场景,mv 将数据目录名称修改为其他名称,rm把数据目录删除

在这里插入图片描述

(2)恢复
① 伪造数据目录丢失

使用gs_om -t status --detail查询数据目录名称

gs_om -t status --detail

在这里插入图片描述

删除原数据目录

# 删除目录
rm -rf /opt/huawei/install/data/dn
# 重新查看集群状态
gs_om -t status --detail

在这里插入图片描述

重新启动数据库也无法正常启动

在这里插入图片描述

② 恢复

将备份的目录复制到数据目录下,名称依旧还是原数据目录名称(无法确定名称用上面介绍的方式查看),设置过映射的表空间当前所使用路径为备份时指定的目录,所以只需要恢复数据目录即可,且表空间原目录可以不维护

在这里插入图片描述

# 将备份目录复制到/opt/huawei/install/data目录下,并命名为dn
cp -r /home/omm/backup/basebackup /opt/huawei/install/data/dn
# 启动数据库
gs_om -t start
# 查看数据库状态
gs_om -t query

在这里插入图片描述

备份流程

  1. 创建备份目录,确保目录存在且为空
  2. 调用工具,执行备份
  3. 如果有绝对路径的表空间,需要配置映射路径

恢复流程

  1. 使用gs_om查看原数据目录的路径
  2. 将备份目录整体复制到数据路径的路径,并且目录名称与原数据目录保持一致
  3. 如果绝对路径的表空间数据也丢失,将备份指定的目录复制回原目录

3. gs_probackup

gs_probackup是一个用于管理openGauss数据库备份和恢复的工具。它对openGauss实例进行定期备份,以便在数据库出现故障时能够恢复服务器。

  • 可用于备份单机数据库,也可对主机或者主节点数据库备机进行备份,为物理备份。
  • 可备份外部目录的内容,如脚本文件、配置文件、日志文件、dump文件等。
  • 支持全量备份、增量备份、定期备份和远程备份
  • 可设置备份的留存策略。
(1)开启增量功能

登录到数据库

gsql -p 15400 -d postgres -r

查询pg_settings视图,确定当前cbm参数是开启还是关闭,默认是关闭状态

select * from pg_settings where name like '%cbm%';

在这里插入图片描述

退出数据库连接,使用gs_guc修改参数为on

gs_guc reload -N all -I all -c "enable_cbm_tracking=on";

在这里插入图片描述

(2)初始化备份存储路径
gs_probackup init -B /home/omm/backup/probackup
# -B:指定备份目录,最后一级目录可以不存在,系统会自动创建

在这里插入图片描述

(3)添加备份实例

查询待备份实例数据目录

gs_om -t status --detail

在这里插入图片描述

添加备份实例

gs_probackup add-instance --instance dn1 -B /home/omm/backup/probackup/ -D /opt/huawei/install/data/dn/
# --instance: 实例名称(自定义)
# -B:备份路径
# -D:备份实例的数据目录

在这里插入图片描述

(4)添加备份配置
gs_probackup set-config --instance=dn1 -B /home/omm/backup/probackup/ -d postgres -p 15400
# -d:数据库名称
# -p:数据库端口

在这里插入图片描述

(5)执行全量备份
gs_probackup backup --instance=dn1 -B /home/omm/backup/probackup/ -b full
# -b:备份方式,full为全量,ptrack为增量

在这里插入图片描述

查看备份数据

gs_probackup show -B /home/omm/backup/probackup/

在这里插入图片描述

(6)增量备份

登录数据库伪造数据变动的场景(目的是为了后面的增量备份操作)

gsql -p 15400 -d postgres -r

创建一张新表并添加数据

create table t2(c1 int);
insert into t2 values(1),(2);

在这里插入图片描述

退出数据库连接(\q),执行增量备份

gs_probackup backup --instance=dn1 -B /home/omm/backup/probackup/ -b ptrack

在这里插入图片描述

查看备份数据

gs_probackup show -B /home/omm/backup/probackup/

在这里插入图片描述

(7)合并备份

将增量和全量合并为一个完整全量备份

gs_probackup merge --instance=dn1 -B /home/omm/backup/probackup/ -i ST1V18
# -i:增量备份ID,因为增量备份是依赖全量的,所以指定增量ID后系统会自动匹配该增量依赖的全量是谁

在这里插入图片描述

查看备份数据

gs_probackup show -B /home/omm/backup/probackup/

在这里插入图片描述

(8)备份恢复

校验待恢复的文件是否存在且未损坏

gs_probackup validate -B /home/omm/backup/probackup/

在这里插入图片描述

也可以指定校验具体的实例和备份

gs_probackup validate -B /home/omm/backup/probackup/ --instance dn1 -i ST1V18

在这里插入图片描述

使用restore子命令前,应先停止gaussdb进程

gs_om -t stop

在这里插入图片描述

使用备份恢复数据,当数据库中存在设置了绝对路径的表空间时,恢复时需要为该目录重新指定映射一个新的空目录,否则就会出现如下异常

在这里插入图片描述
3331861)

-T参数和–external-mapping参数需要同时使用

gs_probackup restore --instance dn1 -B /home/omm/backup/probackup/ -i ST1V18 -D /opt/huawei/install/data/dn_bak -T /home/omm/backup/basebackup/tbs1=/home/omm/pg_tbs/tbs1 --external-mapping=/home/omm/backup/basebackup/tbs1=/home/omm/pg_tbs/tbs1# -i:指定恢复到哪次备份,如果没有指定-i就恢复到最近一次备份
# -D:指定恢复到哪个数据目录,如果不指定就是集群中记录的默认数据目录,恢复的目录需要是空的
# -T OLDDIR=NEWDIR:为绝对路径的表空间指定路径映射,一个-T指定一个表空间,此选项必须和--external-mapping一起使用
# --external-mapping=OLDDIR=NEWDIR:在恢复时,将包含在备份中的外部目录从_OLDDIR_重新定位到_NEWDIR_目录

但是备份时未指定备份数据目录外目录,所以指定恢复时会报错

在这里插入图片描述

如果存在外部目录(一般是表空间),备份时使用-E指定外部目录映射

# 备份需要是数据库启动状态
gs_om -t start
# 执行备份
gs_probackup backup --instance=dn1 -B /home/omm/backup/probackup/ -b full -E /home/omm/backup/basebackup/tbs1:/home/omm/pg_tbs/tbs1
# -E old_dir:new_dir 指定目录映射

在这里插入图片描述

基于该备份恢复,在备份时打印内容中是包含了本次备份ID的,也可以使用show查看

在这里插入图片描述

恢复

gs_probackup restore --instance dn1 -B /home/omm/backup/probackup/ -i ST1YER -D /opt/huawei/install/data/dn_bak -T /home/omm/backup/basebackup/tbs1=/home/omm/pg_tbs/tbs1 --external-mapping=/home/omm/backup/basebackup/tbs1=/home/omm/pg_tbs/tbs1

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/72206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文了解JVM的垃圾回收

Java堆内存结构 java堆内存是垃圾回收器管理的主要区域,也被称为GC堆。 为了方便垃圾回收,堆内存被分为新生代、老年代和永久代。 新创建的对象的内存会在新生代中分配,达到一定存活时长后会移入老年代,而永久代存储的是类的元数…

SQL子查询与MyBatis映射

文章目录 前言1. 数据库表结构2. MyBatis Mapper XML3. Java 实体类4. 技术点解析5. 执行效果6. 优化建议 前言 提示:这里可以添加本文要记录的大概内容: 以下是一个结合 SQL 别名、子查询、MyBatis 字段映射和代码复用的完整案例,以用户管…

基于SpringBoot的“校园周边美食探索及分享平台”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“校园周边美食探索及分享平台”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 校园周边美食探索及分享平台结构图…

时间复杂度(Time Complexity)

时间复杂度 1. 什么是时间复杂度? 时间复杂度(Time Complexity)是计算算法执行时间随输入规模(n)增长的变化趋势。它衡量算法的效率,通常使用大 O 记号(Big-O notation)表示&#…

树莓派:更新源

发行版本 Debian 一直维护着至少三个发行版本:“稳定版(stable)”,“测试版(testing)”和“不稳定版(unstable)”。 发行版目录 下一代 Debian 正式发行版的代号为 bullseye — 发布…

K8s 1.27.1 实战系列(八)Service

一、Service介绍 1、Service 的作用与核心功能 Service 是 Kubernetes 中用于抽象一组 Pod 并提供稳定访问入口的资源。它解决了以下问题: ​Pod IP 不固定:Pod 可能因故障、扩缩容或更新导致 IP 变化,Service 通过 ClusterIP(虚拟 IP)提供固定访问地址。​负载均衡:自动…

RocketMQ性能优化篇

在分布式消息系统中,RocketMQ以其高性能、高可靠性和高可扩展性而被广泛应用。然而,为了充分发挥其性能优势,需要进行一系列的性能测试和优化。本文将从性能测试方法和优化实践两个方面,详细介绍如何对RocketMQ进行性能优化。通过…

CSS 知识点总结1

CSS 知识点总结1 今天写了两个页面,用到的知识点,总结一下 1. Flexbox 布局 display: flex;:启用 Flexbox 布局,用于创建灵活的容器。flex-direction: column;:将子元素垂直排列。justify-content:控制子元素在主轴…

双指针算法专题之——复写零

文章目录 题目介绍思路分析异地复写优化为就地复写 AC代码 题目介绍 链接: 1089. 复写零 思路分析 那么这道题我们依然可以使用双指针算法来解决 异地复写 先不考虑题目的要求,直接就地在原数组上修改,可能不太好想,我们这里可以先在一个…

Python控制语句 ——break和continue

1.以下关于Python循环结构的描述中,错误的是() 。 A、break用来结束当前当次语句,但不跳出当前的循环体。 B、遍历循环中的遍历结构可以是字符串、文件、组合数据类型和range函数等。 C、Python通过for,while等保留字构建循环结构。 D、continue只结束本次循环。 答案:A。在…

搭建阿里云专有网络VPC

目录 一、概述 二、专有网络vpc 2.1 vpc基本信息 2.2 vpc资源管理 2.3 vpc网段管理 三、交换机 四、NAT网关 4.1 绑定弹性公网IP 4.2 NAT网关信息 4.3 绑定的弹性公网IP 4.4 DNAT 4.5 SNAT 五、弹性公网IP 六、访问控制ACL(绑定交换机) 6…

阿里巴巴发布 R1-Omni:首个基于 RLVR 的全模态大语言模型,用于情感识别

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

《深度剖析:鸿蒙系统下智能NPC与游戏剧情的深度融合》

在游戏开发领域,鸿蒙系统的崛起为开发者们带来了前所未有的机遇与挑战。尤其是在开发基于鸿蒙系统的人工智能游戏时,实现智能NPC的行为逻辑与游戏剧情紧密结合,成为了打造沉浸式游戏体验的关键。 鸿蒙系统作为一款面向全场景的分布式操作系统…

聚划算!三个模型对比预测!CNN-GRU、GRU、CNN三模型多变量时序光伏功率预测

聚划算!三个模型对比预测!CNN-GRU、GRU、CNN三模型多变量时序光伏功率预测 目录 聚划算!三个模型对比预测!CNN-GRU、GRU、CNN三模型多变量时序光伏功率预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 CNN-GRU、GRU、CN…

C# 的 ManualResetEvent(线程同步操作) 类详解

C# 的 ManualResetEvent 类详解 作用 ManualResetEvent 是用于线程同步操作的类,允许一个或多个线程等待特定信号,以协调多个线程的执行顺序。它通过事件通知机制实现,确保线程在收到信号前保持阻塞,直到其他线程显式发出信号。…

小白学习:提示工程(什么是prompt)

课程链接 https://www.bilibili.com/video/BV1PX9iYQEry/?spm_id_from333.337.search-card.all.click 一 什么是提示工程 【提示工程】也叫【指令工程】 prompt就是给大模型发的指令,如“给我讲个笑话” 懂得提示工程原理会带来什么优势 懂得原理 为什么有的指…

Docker Compose 之详解(Detailed Explanation of Docker Compose)

Docker Compose 之详解 当容器数量逐渐增多,你是否感到手忙脚乱?面对复杂的部署场景,是时候祭出神器Docker Compose了!它能帮你优雅地管理多容器应用,一键启动、停止所有服务,不再为复杂的手动操作焦头烂额…

C语言 —— 此去经年梦浪荡魂音 - 深入理解指针(卷一)

目录 1. 内存和地址 2. 指针变量和地址 2.1 取地址操作符(&) 2.2 指针变量 2.3 解引用操作符 (*) 3. 指针的解引用 3.1 指针 - 整数 3.2 void* 指针 4. const修饰指针 4.1 const修饰变量 4.2 const修饰指针变量 5…

【AI】从头到脚详解如何创建部署Azure Web App的OpenAI项目

【AI】从头到脚详解如何创建部署Azure Web App的OpenAI项目 在Azure Web应用上,您可以使用Python的OpenAI包方便快捷地调用官方API,上传您的训练数据,并利用他们的算法进行处理。本教程提供了一个逐步指南,帮助您在Azure Web应用上部署您的OpenAI项目,涵盖了从资源设置到…

机器视觉工程师红外相机的选择:红外长波工业相机和短波红外工业相机玄机大总结

红外长波(LWIR)和短波(SWIR)工业相机在原理、应用场景和技术特点上有显著差异。以下是它们的对比分析: 1. 波长范围与成像原理 2. 技术特点 3. 典型应用场景 4. 优缺点对比 LWIR优势: 无需光照,适用于完全黑暗环境。 直接反映物体温度分布。 对烟雾、灰尘穿透能力强。…