【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.rhkb.cn/news/33272.html

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

相关文章

MySql学习_基础Sql语句

目录 1.数据库相关概念 2.SQL 2.1 SQL通用语法 2.2 SQL分类 2.3 DDL(数据库定义语言) 2.4 DML(数据操作语言) 2.5 DQL(数据查询语言) 2.6 DCL(数据控制语言) 3. 函数 3.1 字…

MAE:Masked Autoencoders Are Scalable Vision Learners——论文学习

论文地址:https://arxiv.org/pdf/2111.06377.pdf 官方源码:https://github.com/facebookresearch/mae 一、主要内容 本文证明了掩码自编码器(MAE)是一种可扩展的计算机视觉自监督学习算法。本文的MAE方法很简单:屏蔽输入图像的随机补丁并重建缺失的像素…

【C++标准库类型】深入理解C++中的using声明:从基础到实践

目录 一、using声明基础 1.1 基本语法形式 1.2 典型应用场景 1.3 作用域规则 二、关键注意事项 2.1 命名冲突处理 2.2 头文件使用规范 2.3 与typedef的对比 三、面向对象中的应用 3.1. 解除派生类名称隐藏(核心应用) 3.2. 构造函数继承&#…

VSTO(C#)Excel开发6:与窗体交互

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

微服务Sentinel组件:服务保护详解

目录 服务保护简介 服务保护方案 安装与介绍Sentinel Sentinel整合微服务 服务保护实现 请求限流 线程隔离 OpenFeign整合Sentinel 配置线程隔离 服务熔断 编写降级逻辑 实现服务熔断 服务保护总结 服务保护简介 微服务保护是为了保障系统整体的稳定性和可靠性&am…

计算机视觉|首次写入政府工作报告!这个科技新词“具身智能”到底是什么?

一、具身智能与视觉-动作联合建模简介 具身智能(Embodied Intelligence) 是人工智能领域的关键研究方向,强调智能体通过物理实体与环境交互实现认知和智能行为。与传统人工智能基于静态数据和符号推理不同,具身智能依赖动态感知与…

【Azure 架构师学习笔记】- Azure Databricks (18) --Delta Live Table 架构

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (17) --Delta Live Table和Delta Table Databrics DLT 是一个ETL 框架,通过创建pipeline来简化开发难度,本文介绍两种D…

上下文学习思维链COTPrompt工程

一、上下文学习 上下文学习强调在学习过程中考虑问题所处的上下文环境。 1.1 上下文学习的分类 零样本(Zero-Shot)上下文学习单样本(One-Shot)上下文学习少样本(Few-Shot)上下文学习 1.2 示例选择方法 …

嵌入式裸机设计--MCU常用裸机架构有哪些?

为什么是裸机设计 792125321入群学习更高效! 在MCU(微控制器单元)裸机开发中,我们常见的架构设计主要围绕如何高效管理资源和任务调度。认识这些开发方式,对我们开发一个小型项目来说及有好处! 下面介绍…

C语言基础知识04

指针 指针概念 指针保存地址,地址是字节的编号 指针类型和保存的地址类型要一直 使用时注意,把地址转换为&变量的格式来看 int a[3]; a转为&a[0] 指针的大小 64bit 固定8字节, 32bit 固定4字节 指针…

IDEA 一键完成:打包 + 推送 + 部署docker镜像

1、本方案要解决场景? 想直接通过本地 IDEA 将最新的代码部署到远程服务器上。 2、本方案适用于什么样的项目? 项目是一个 Spring Boot 的 Java 项目。项目用 maven 进行管理。项目的运行基于 docker 容器(即项目将被打成 docker image&am…

浏览器崩溃的第一性原理:内存管理的艺术

作者:京东科技 屠永涛 登录后复制 你是否曾经遇到过浏览器突然卡顿,甚至崩溃的情况?尤其是在打开多个标签页或运行复杂的网页应用时,浏览器似乎变得异常脆弱。这种崩溃的背后,往往与内存管理息息相关。 1. 浏览器的内存…

Redis的缓存雪崩、缓存击穿、缓存穿透与缓存预热、缓存降级

一、缓存雪崩: 1、什么是缓存雪崩: 如果缓在某一个时刻出现大规模的key失效,那么就会导致大量的请求打在了数据库上面,导致数据库压力巨大,如果在高并发的情况下,可能瞬间就会导致数据库宕机。这时候如果…

算法刷题整理合集(一)

本篇博客旨在记录自已的算法刷题练习成长,里面注有详细的代码注释以及和个人的思路想法,希望可以给同道之人些许帮助。本人也是算法小白,水平有限,如果文章中有什么错误或遗漏之处,望各位可以在评论区指正出来&#xf…

ubuntu ollama+dify实践

安装ollama 官网的指令太慢了,使用以下指令加速: export OLLAMA_MIRROR"https://ghproxy.cn/https://github.com/ollama/ollama/releases/latest/download" curl -fsSL https://ollama.com/install.sh | sed "s|https://ollama.com/dow…

Cookie与Session详解

Cookie简介 Cookie 是浏览器提供的持久化存储数据的一种机制。是指某些网站为了辨别用户身份、进行会话跟踪而储存在用户本地终端上的数据(通常经过加密)。以下是关于 Cookie 的详细介绍: Cookie工作原理 当你访问一个网站时,该网…

Python Openpyxl给Excel增加条件规则

使用openpyxl添加条件格式是一个简单而直接的过程。在使用Excel文件时,条件格式对于数据趋势的可视化、突出显示关键数据点以及使数据更有意义和可理解非常有用。在本文中,我们将详细介绍如何使用openpyxl添加条件格式。 OpenPyxl中的条件格式简介 在进…

离线服务器ollama新增qwen2:0.5b模型

离线服务器ollama新增qwen2:0.5b模型 Dify集成ollama前面已经介绍过离线服务器CentOS使用的docker安装的ollama,其中在ollama中已经安装了deepseek-r1:1.5b。目前的需求是需要再安装一个qwen2:0.5b的模型,那么如何安装呢? 1.首先在有网的服…

零成本本地化搭建开源AI神器LocalAI支持CPU推理运行部署方案

文章目录 前言1. Docker部署2. 简单使用演示3. 安装cpolar内网穿透4. 配置公网地址5. 配置固定公网地址 前言 嘿,小伙伴们!今天给大家带来一个超酷的黑科技——LocalAI。没错,你没听错,就是那个能在你的个人电脑上运行大型语言模…

数据类设计_图片类设计之4_规则类图形混合算法(前端架构)

前言 学的东西多了,要想办法用出来.C和C是偏向底层的语言,直接与数据打交道.尝试做一些和数据方面相关的内容 引入 接续上一篇,讨论图片类型设计出来后在场景中如何表达,以及图片的混合算法.前面的内容属于铺垫和基础,这篇内容和实际联系起来了. 背景图和前景图 这里笔者想先…