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

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

相关文章

【Java 进阶篇】JDBC 数据库连接池详解

数据库连接池是数据库连接的管理和复用工具,它可以有效地降低数据库连接和断开连接的开销,提高了数据库访问的性能和效率。在 Java 中,JDBC 数据库连接池是一个常见的实现方式,本文将详细介绍 JDBC 数据库连接池的使用和原理。 1…

Qt扩展-QCustomPlot绘图基础概述

QCustomPlot绘图基础概述 一、概述二、改变外观1. Graph 类型2. Axis 坐标轴3. 网格 三、案例1. 简单布局两个图2. 绘图与多个轴和更先进的样式3. 绘制日期和时间数据 四、其他Graph:曲线,条形图,统计框图,… 一、概述 本教程使用…

调度程序以及调度算法的评价指标

1.调度器/调度程序 调度程序决定调度算法,时间片大小 ②,③由调度程序引起,调度程序决定: 1.调度时机 创建新进程进程退出运行进程阻塞I/O中断发生(可能唤醒某些阻塞进程)非抢占式调度策略,只有运行进程阻塞或退出…

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

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

10.5作业

磕磕绊绊还是差不多完成了,tcp多客户端在线词典 代码&#xff1a; 数据库导入&#xff1a;有点粗糙&#xff0c;不知道怎么搞成两列&#xff0c;一个单词中间还是空格卧槽难搞 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <s…

Go 代码中的文档和注释

撰写清晰、简洁和全面的代码文档的指南 在软件开发领域&#xff0c;编写代码只占了一半的战斗。另一半则围绕着创建清晰、简洁和全面的文档展开&#xff0c;这些文档不仅有助于开发人员理解代码库&#xff0c;还充当未来开发的路线图。在本指南中&#xff0c;我们将深入探讨编…

Spring:通过@Lazy解决构造方法形式的循环依赖问题

一、定义2个循环依赖的类 package cn.edu.tju.domain2;import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component;Component public class A {private final B b;public B getB() {return b;}Lazypublic A(B b){this.b b;//Sy…

[React源码解析] React的设计理念和源码架构 (一)

任务分割异步执行让出执法权 文章目录 1.React的设计理念1.1 Fiber1.2 Scheduler1.3 Lane1.4 代数效应 2.React的源码架构2.1 大概图示2.2 jsx2.3 Fiber双缓存2.4 scheduler2.5 Lane模型2.6 reconciler2.7 renderer2.8 concurrent 3.React源码调试 1.React的设计理念 Fiber: 即…

python获取时间戳

使用 datetime 库获取时间。 获取当前时间&#xff1a; import datetime print(datetime.datetime.now()) . 后面的是微秒&#xff0c;也是一个时间单位&#xff0c;1秒1000000微秒。 转为时间戳&#xff1a; import datetimedate datetime.datetime.now() timestamp date…

最短路径专题5 最短路径

题目&#xff1a; 样例&#xff1a; 输入 4 5 0 2 0 1 2 0 2 5 0 3 1 1 2 2 3 2 2 输出 3 0->3->2 思路&#xff1a; 根据题目意思&#xff0c;求最短路&#xff0c;这个根据平时的Dijkstra&#xff08;堆优化&#xff09;即可&#xff0c;关键在于求路径的方法&#x…

uni-app:实现页面效果2(canvas绘制,根据页面宽度调整元素位置)

效果 代码 <template><view><!-- 车搭配指示器-双显 --><view class"content_position"><view class"content"><view class"SN"><view class"SN_title">设备1</view><view class…

视频讲解|含可再生能源的热电联供型微网经济运行优化(含确定性和源荷随机两部分代码)

1 主要内容 该视频为《含可再生能源的热电联供型微网经济运行优化》代码讲解内容&#xff0c;对应的资源下载链接为考虑源荷不确定性的热电联供微网优化-王锐matlab&#xff08;含视频讲解&#xff09;&#xff0c;对该程序进行了详尽的讲解&#xff0c;基本做到句句分析和讲解…

源码系列 之 ThreadLocal

简介 ThreadLocal的作用是做数据隔离&#xff0c;存储的变量只属于当前线程&#xff0c;相当于当前线程的局部变量&#xff0c;多线程环境下&#xff0c;不会被别的线程访问与修改。常用于存储线程私有成员变量、上下文&#xff0c;和用于同一线程&#xff0c;不同层级方法间传…

【数据结构】链表与LinkedList

作者主页&#xff1a;paper jie 的博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《JAVA数据结构》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精…

Ubuntu中启动HDFS后没有NameNode解决办法

关闭进程&#xff1a; stop-dfs.sh 格式化&#xff1a; hadoop namenode -format 出现报错信息&#xff1a; 23/10/03 22:27:04 WARN fs.FileUtil: Failed to delete file or dir [/usr/data/hadoop/tmp/dfs/name/current/fsimage_0000000000000000000.md5]: it still exi…

3种等待方式,让你学会Selenium设置自动化等待测试脚本!

一、Selenium脚本为什么要设置等待方式&#xff1f;——即他的应用背景到底是什么 应用Selenium时&#xff0c;浏览器加载过程中无法立即显示对应的页面元素从而无法进行元素操作&#xff0c;需设置一定的等待时间去等待元素的出现。&#xff08;简单来说&#xff0c;就是设置…

黑马mysql教程笔记(mysql8教程)基础篇——数据库相关概念、mysql安装及卸载、数据模型、SQL通用语法及分类(DDL、DML、DQL、DCL)

参考文章1&#xff1a;https://www.bilibili.com/video/BV1Kr4y1i7ru/ 参考文章2&#xff1a;https://dhc.pythonanywhere.com/article/public/1/ 文章目录 基础篇数据库相关概念&#xff08;数据库DataBase&#xff08;DB&#xff09;、数据库管理系统DataBase Management Sy…

正则表达式基本使用

文章目录 1. 基本介绍2. 元字符(Metacharacter)-转义号 \\3. 元字符-字符匹配符3.1 案例 4. 元字符-选择匹配符5. 元字符-限定符6. 元字符-定位符7. 分组7.1 捕获分组7.2 非捕获分组 8. 非贪婪匹配9. 应用实例10. 正则验证复杂URL 1. 基本介绍 如果要想灵活的运用正则表达式&a…

【算法学习】-【双指针】-【快乐数】

LeetCode原题链接&#xff1a;202. 快乐数 下面是题目描述&#xff1a; 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。 如果…

Linux:minishell

目录 1.实现逻辑 2.代码及效果展示 1.打印字符串提示用户输入指令 2.父进程拆解指令 3.子进程执行指令,父进程等待结果 4.效果 3.实现过程中遇到的问题 1.打印字符串的时候不显示 2.多换了一行 3.cd路径无效 4.优化 1.ll指令 2.给文件或目录加上颜色 代码链接 模…