postgresql-备份与恢复

postgresql-备份与恢复

  • 基本概念
  • 备份类型
    • 物理备份与逻辑备份
    • 在线备份与离线备份
    • 全量备份与增量备份
  • 备份恢复工具
  • 备份与恢复
    • 逻辑备份与还原
      • 备份单个数据库
      • psql
      • pg_dump
      • pg_store
  • 备份整个集群

基本概念

服务器系统错误、硬件故障或者人为失误都可能导致数据的丢失或损坏。因此,备份和恢复
对于数据库的高可用性至关重要。数据库管理员应该根据业务的需求制定合适的备份策略,并提
前演练各种故障情况下的恢复过程,做到有备无患。

在升级 PostgreSQL 版本之前,通常也需要先进行数据库的备份。另外,备份也可以用于主从复制结构中的从节点初始化

备份(backup)是通过某种方式(物理复制或者逻辑导出)将数据库的文件或结构和数据
拷贝到其他位置进行存储

还原(restore)是一种不完全的恢复,使用备份的文件将数据库恢复到执行备份时的状态。
备份时间点之后的数据变更无法通过还原进行恢复。

恢复(recovery)通常是先使用物理备份文件进行还原,然后再应用备份时间点到故障点之
间的日志文件(WAL),将数据库恢复到最新状态。

备份类型

根据备份的方式和内容的不同,可以进行以下分类。

物理备份与逻辑备份

在这里插入图片描述

在线备份与离线备份

在这里插入图片描述

全量备份与增量备份

全量备份(Full Backup)就是备份所有的数据库文件,执行一次完整的 PostgreSQL 数据库集群备份。这种方式需要备份的内容较多,备份时较慢,但是恢复速度更快。

增量备份(Incremental Backup)就是备份上一次备份(任何类型)之后改变的文件。另外,
差异备份(Differential Backup)是针对上一次完全备份后发生变化的所有文件进行备份。增量
备份每次备份的数据量较小,但是恢复时需要基于全量备份,并依次恢复增量部分,时间较长。
差异备份位于两者之间

在这里插入图片描述

备份恢复工具

在这里插入图片描述

  • pg_dump,逻辑备份工具,支持单个数据库(可以指定模式、表)的导出,可以选择导出的格式
  • pg_dumpall,逻辑备份工具,用于导出整个数据库集群,包括公用的全局对象
  • pg_basebackup,物理备份工具,为数据库集群创建一个基准备份。它也可以用于时间点恢复(point-in-time recovery)的基准备份,或者设置基于日志传输或流复制的从节点的初始化。
  • psql, PostgreSQL 交互式命令行工具,也可以用于导入逻辑备份产生的 SQL 文件
  • pg_restore,逻辑还原工具,用于还原 pg_dump 导出的归档格式的备份文件。
  • COPY,PostgreSQL 专有的 SQL 语句,将表中的数据复制到文件,或者将文件中的数据复制到表中

此外,还可以通过第三方工具执行备份与恢复操作。

  • pgAdmin(开源)
  • Barman(开源)
  • pg_probackup(开源)
  • pgBackRest(开源)
  • BART(商业)

备份与恢复

逻辑备份与还原

执行逻辑备份时,PostgreSQL 服务器必须已经启动,备份工具(例如 pg_dump)通过建立
数据库连接,从数据库中查询出相应的结构信息和数据,并生成备份文件。针对不同的备份格式,
PostgreSQL 提供了配套的还原工具。

备份单个数据库

PostgreSQL 提供了备份单个数据库的工具 pg_dump,在安装目录下bin文件夹下面,关于 pg_dump 工具的各种选项,可以参考官方文档
在这里插入图片描述

D:\tools\postgresql\bin\pg_dump.exe --help

在这里插入图片描述
它支持三种文件格式
在这里插入图片描述
使用windows dos命令行打开pg_dump,备份数据库
在这里插入图片描述
备份成功,文件内容
在这里插入图片描述

psql

官网介绍

-- 查询使用方式
D:\tools\postgresql\bin\psql.exe --help

在这里插入图片描述
使用psql恢复数据库
在这里插入图片描述
恢复成功
在这里插入图片描述

pg_dump

pg_dump 和 psql 支持的读写管道功能使得我们可以直接将数据库从一个服务器导出到另一
个服务器
-Fc 指定自定义格式,这种格式的备份,还原时需要使用PostgreSQL 提供的 pg_restore 工具
-f 指定导出的文件名
-h 数据库连接地址
-U 用户名
-d 数据库名

"D:\tools\postgresql\bin\pg_dump.exe" -h localhost  -U postgres -d cps  -f "C:\Users\16837\Desktop\1.dmp" -Fc

输入用户postgres对应的用户密码
在这里插入图片描述
备份成功,1.dmp文件内容
在这里插入图片描述

pg_store

pg_restore路径 -h数据库连接地址 -U 用户名 -d数据库名 恢复数据库文件地址

"D:\tools\postgresql\bin\pg_restore.exe" -h localhost  -U postgres -d newdb "C:\Users\16837\Desktop\1.dmp"

输入用户postgres对应的用户密码

在这里插入图片描述
恢复成功,newdb下的表products被创建
在这里插入图片描述

备份整个集群

pg_dump 每次只导出一个数据库,而且它不会导出角色或表空间(属于集群范围)相关的信
息。为此,PostgreSQL 还提供了导出数据库集群的 pg_dumpall 工具。它会针对集群中的每个数
据库调用 pg_dump 来完成导出工作,同时还导出所有数据库公用的全局对象(pg_dump 不保存
这些对象),包括数据库用户和组、表空间以及所有数据库的访问权限等属性
pg_dumpall官网介绍
因为 pg_dumpall 从所有数据库中读取表,所以需要以一个超级用户的身份连接以便生成完
整的导出操作。同样,还原时也需要超级用户特权执行备份的脚本,这样才能增加用户和组以及
创建数据库

-- pg_dumpall路径  -U用户名   -f备份文件路径
"D:\tools\postgresql\bin\pg_dumpall.exe" -U postgres  -f "C:\Users\16837\Desktop\1.sql"

在这里插入图片描述
备份成功,文件内容
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Redis学习笔记(下):持久化RDB、AOF+主从复制(薪火相传,反客为主,一主多从,哨兵模式)+Redis集群

十一、持久化RDB和AOF 持久化:将数据存入硬盘 11.1 RDB(Redis Database) RDB:在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。 备份…

vtk 动画入门 1 代码

实现效果如图&#xff1a; #include <vtkAutoInit.h> //VTK_MODULE_INIT(vtkRenderingOpenGL2); //VTK_MODULE_INIT(vtkInteractionStyle); VTK_MODULE_INIT(vtkRenderingOpenGL2); VTK_MODULE_INIT(vtkInteractionStyle); //VTK_MODULE_INIT(vtkRenderingFreeType); #in…

新手学习笔记-----编译和链接

目录 1. 翻译环境和运⾏环境 2. 翻译环境&#xff1a;预编译编译汇编链接 2.1 预处理 2.2 编译 2.2.1 词法分析 2.2.2 语法分析 2.2.3 语义分析 2.3 汇编 2.4 链接 3. 运⾏环境 1. 翻译环境和运⾏环境 在ANSI C的任何⼀种实现中&#xff0c;存在两个不同的环境。 第…

JSON的MIME媒体类型是application/json

JSON&#xff08;全称 JavaScript Object Notation&#xff09;即JavaScript对象表示法&#xff0c;通知使用application/json媒体类型。 目录 1、JSON介绍 2、JSON语法 3、实践总结 运行环境&#xff1a; Windows-7-Ultimate-x64、Windows-10-BusinessEditions-21h2-x64 1…

Can‘t pickle <class ‘__main__.Test‘>: it‘s not the same object as __main__.Test

目录 原因1 类名重复了 案例1 变量名和类名重复 原因1 类名重复了 检查项目代码&#xff0c;是不是其他地方有同名类。 案例1 变量名和类名重复 转自&#xff1a;python3报错Cant pickle <class __main__.Test>: its not the same object as __main__.Test解决 - 知乎…

SpringBoot Validation入参校验国际化

在 Spring Boot 中&#xff0c;可以使用 Validation 和国际化来实现对入参的校验。 常用的校验 NotNull验证字段值不能为 nullNotEmpty验证字段值不能为 null 或空字符串NotBlank验证字符串字段值不能为空、null&#xff0c;并且必须至少包含一个非空白字符Size验证字符串、…

lv8 嵌入式开发-网络编程开发 01什么是互联网

目录 1 计算机网络的定义与分类 1.1 按照网络的作用范围进行分类 1.2 按照网络的使用者进行分类 2 网络的网络 2.1 名词解释 2.2 边缘与核心 3 互联网基础结构发展的三个阶段 3.1 第一阶段&#xff1a;1969 – 1990 3.2 第二阶段&#xff1a;1985 – 1993 3.3 第三阶…

小谈设计模式(14)—建造者模式

小谈设计模式&#xff08;14&#xff09;—建造者模式 专栏介绍专栏地址专栏介绍 建造者模式角色分类产品&#xff08;Product&#xff09;抽象建造者&#xff08;Builder&#xff09;具体建造者&#xff08;Concrete Builder&#xff09;指挥者&#xff08;Director&#xff0…

Java之SpringCloud Alibaba【六】【Alibaba微服务分布式事务组件—Seata】

一、事务简介 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。 在关系数据库中&#xff0c;一个事务由一组SQL语句组成。 事务应该具有4个属性: 原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。 原子性(atomicity) ∶个事务…

Selenium上传文件有多少种方式?不信你有我全

Selenium 封装了现成的文件上传操作。但是随着现代前端框架的发展&#xff0c;文件上传的方式越来越多样。而有一些文件上传的控件&#xff0c;要做自动化控制会更复杂一些&#xff0c;这篇文章主要讨论在复杂情况下&#xff0c;如何通过自动化完成文件上传 1.input 元素上传文…

国庆作业6

TCP服务器 #include "head.h" #define PORT 2580 //端口号 #define IP "192.168.31.219" //本机IP int main(int argc, const char *argv[]) {sqlite3* dbNULL;if(sqlite3_open("./my.db",&db)!SQLITE_OK){fprintf(stde…

Python大数据之PySpark(四)SparkBaseCore

文章目录 SparkBase&Core环境搭建-Spark on YARN扩展阅读-Spark关键概念[了解]PySpark角色分析[了解]PySpark架构后记 SparkBase&Core 学习目标掌握SparkOnYarn搭建掌握RDD的基础创建及相关算子操作了解PySpark的架构及角色 环境搭建-Spark on YARN Yarn 资源调度框…

面试题:熟悉设计模式吗?谈谈简单工厂模式和策略模式的区别

刚刚接触设计模式的时候&#xff0c;我相信单例模式和工厂模式应该是用的最多的&#xff0c;毕竟很多的底层代码几乎都用了这些模式。自从接触了一次阿里的公众号发的一次文章关于 DDD的使用 以后&#xff0c;就逐渐接触了策略模式。现在在项目中运用最多的也是这几种设计模式了…

【深蓝学院】手写VIO第4章--基于滑动窗口算法的 VIO 系统:可观性和 一致性--笔记

0. 内容 T1. 参考SLAM14讲P247直接可写&#xff0c;注意 ξ 1 , ξ 2 \xi_1,\xi_2 ξ1​,ξ2​之间有约束&#xff08;关系&#xff09;。 套用舒尔补公式&#xff1a; marg掉 ξ 1 \xi_1 ξ1​之后&#xff0c;信息被传递到 L 1 和 L 2 L_1和L_2 L1​和L2​之间了。 T2.

趋势列表上又多了两个漏洞!

CVE-2023-24955 和 CVE-2023-29360 来自微软产品 5 月和 6 月的安全补丁报告。它们之所以特别危险&#xff0c;是因为出现了公开漏洞利用。 以下是详细信息。 第一个漏洞 CVE-2023-24955存在于 Microsoft SharePoint Server 中。它可导致远程代码执行。 它与覆盖随后由服务器执…

匿名上位机V7波形显示教程-简单能用

匿名上位机V7波形显示教程-简单能用 匿名上位机V7下位机数据格式根据匿名上位机V7的手册说明文档&#xff0c;编写对应的指令在主函数中初始化ANDmessage驱动连接匿名上位机V7 匿名上位机V7下位机数据格式 DATA区域内容&#xff1a; 举例说明DATA区域格式&#xff0c;例如上文&…

选择排序算法:简单但有效的排序方法

在计算机科学中&#xff0c;排序算法是基础且重要的主题之一。选择排序&#xff08;Selection Sort&#xff09;是其中一个简单但非常有用的排序算法。本文将详细介绍选择排序的原理和步骤&#xff0c;并提供Java语言的实现示例。 选择排序的原理 选择排序的核心思想是不断地从…

NestJs和Vite使用monorepo管理项目中,需要使用共享的文件夹步骤

NestJs和Vite使用monorepo管理项目中,需要使用共享的文件夹步骤 1 首先需要将nest-cli打包的功能通过webpack接管 nest-cli.json文件内容 {"$schema": "https://json.schemastore.org/nest-cli","collection": "nestjs/schematics",…

FPGA project : TFT_LCD

实验目标&#xff1a; 驱动TFT_LCD显示十色彩条。 重点掌握的知识&#xff1a; 1&#xff0c;液晶显示器&#xff0c;简称LCD(Liquid Crystal Display)&#xff0c;相对于上一代CRT显示器(阴极射线管显示器)&#xff0c;LCD显示器具有功耗低、体积小、承载的信息量大及不伤眼…

Python入门教程48:Pycharm永久镜像源的pip配置方法

国内几个好用的Python镜像服务器地址&#xff1a; 清华大学镜像站&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple/阿里云镜像站&#xff1a;https://mirrors.aliyun.com/pypi/simple/中科大镜像站&#xff1a;https://pypi.mirrors.ustc.edu.cn/simple/中国科技大学镜…