PostgreSQL从入门到精通教程 - 第39讲:数据库完全恢复

PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。

第39讲:数据库完全恢复

PostgreSQL第39讲:12月23日(周六)19:30,钉钉群(35822460)& 视频号(数据库老陈)直播

内容1:描述介质恢复

内容2:执行非归档模式下恢复

内容3:执行归档模式下完全恢复

内容4:执行基于表空间的完全恢复

内容5:执行只读数据库恢复

介质恢复

用于恢复丢失或损坏的当前数据文件或控制文件

需要显式调用

操作如下:

从备份中恢复文件

恢复的文件会应用归档日志和在线重做日志进行数据重构

恢复步骤

执行数据文件转储和恢复

使用操作系统命令tar/cp转储数据文件

使用pg_ctl start对数据文件进行恢复

非归档模式恢复

在非归档模式下,必须恢复数据目录下所有的文件和目录:

所有$PGDATA目录下的子目录 base、global、pg_wal...

所有$PGDATA目录下的文件 postgresql.conf、pg_hba.conf...

非归档模式恢复优缺点

优势

易于执行,出错风险低

恢复时间是转储所有文件所需的时间

缺点

数据丢失,必须手动重新应用

整个数据库将恢复到上一次完整关闭备份的位置

非归档模式恢复

归档模式恢复

完全恢复

使用wal数据或增量备份

将数据库更新到最新的时间点

应用所有wal日志记录的更改

不完全恢复

使用备份和wal日志生成数据库的非当前版本

完全恢复

确认数据库关闭

恢复数据文件

如果是全库备份,哪怕是损坏了一个数据文件,也要转储备份的所有数据文件

如果是单独表空间(除了global)备份,哪怕损坏了表空间下的一个数据文件,也要转储备份的所有数据文件

修改postgresql.conf文件

生成recovery.signal空文件

启动数据库(recovery)

归档模式完全恢复优缺点

优势

将所有数据恢复到最新点(故障点)

恢复时间是转储数据文件和应用所有归档日志文件所需的时间

缺点

必须具有自您要从中恢复的备份以来的所有归档日志文件

执行一个基于数据库备份的完全恢复

示例(恢复前备份pg_wal目录下所有文件)

1、使用tar包进行恢复

tar -zvxf /backup/base.tar.gz -C $PGDATA

2、修改postgresql.conf文件

restore_command = 'cp /home/postgres/archives/%f %p'

recovery_target_timeline = 'latest'

3、生成recovery.signal空文件

touch recovery.signal

4、启动数据库

pg_ctl start

时间线和时间线历史文件

timelineId(时间线)

每当做了一次完全或者不完全恢复后,数据库的时间线就会发生变化,意味着从失败点后重新开始新的生命轨迹,同时用时间线历史文件来记录。

timelineId 和 wal文件名关系

时间线的改变导致wal名字发生变化

当完成对数据库的恢复后,会产生新的wal文件,其命名规则为在原来的段文件名字中用新的时间线替换原来的时间线,其它不变。

时间线和时间线历史文件

Timeline History File

历史文件会在pg_wal中生成,同时复制到归档目录下,命名规则如下所示:

“8-digit new timelineId”.history 比如:00000002.history

时间线历史记录文件至少包含一行,每行由以下三项组成:

timelineId –用于恢复的归档日志的timelineId。

LSN –发生WAL段切换的LSN位置

reason –人类可读的时间线为什么改变的解释。

比如:postgres> cat /home/postgres/archivelogs/00000002.history

0/A000198before 2020-4-28 12:05:00.861324+00

注意上面1是行号,也代表数据库恢复过的次数。这个文件不要删除,否则会影响数据库恢复。

执行一个基于表空间备份的完全恢复

PG支持基于表空间(除了pg_global之外)级别的完全恢复,因为pg_global表空间比较特殊,其中包括控制文件,而控制文件不能使用备份的进行恢复。

1、转储备份的表空间目录到目标位置

cp -rf /backup/PG_12_201909212 /home/postgres/tblspc/

2、转储backup_lable文件到$PGDATA目录下

cp /backup/backup_lable $PGDATA

3、创建recovery.signal

4、修改postgresql.conf文件

restore_command = 'cp /home/postgres/archives/%f %p'

recovery_target_timeline = 'latest'

5、启动数据库,表空间所包含的表能够实现完全恢复

pg_ctl start

只读数据库的恢复

执行一个只读数据库的恢复

1、把数据库变成只读状态

ALTER DATABASE new_db1 SET default_transaction_read_only=on;

2、单独备份new_db1数据库目录

3、如果new_db1数据库目录损坏,关闭数据库,转储备份的目录到目标位置

4、打开数据库

*PG不支持单个数据库完全恢复。

CUUG PostgreSQL技术大讲堂系列公开课,往期视频及文档,请联系CUUG客服。

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

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

相关文章

JavaScript高级 构造函数与原型篇

构造函数与原型 1、构造函数 构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与new一起使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。 // 定义学生构造函数func…

微信小程序开发系列-02注册小程序

上一篇文章,创建了一个最小的小程序,但是,还有3个疑问没有弄清楚,还是基于demo1工程,这篇文章继续探索。 当前的目录结构是否是完备的呢?(虽然小程序可以运行起来)app.js文件内容还…

Springboot是什么?Springboot详解!入门介绍

📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于…

使用通道和模式

通过通道、选择语句和最佳实践掌握 Go 中的并发编程 并发编程是构建高效和响应迅速的软件的强大范例。Go,也被称为 Golang,通过通道提供了一种健壮且优雅的解决方案来进行并发通信。在这篇文章中,我们将探讨通道的概念、它们在并发编程中的作…

海量搜索需求助推,跟着官方和优秀创作者一起来“百度夜校”开课!

文章目录 🍔概述🛸新中产消费人群占比高,教育博主快速崭露头角🛸亿级消费入口,泛知识创作者的新蓝海 🍔概述 近日,百度百家号官方开启“教育变现专场”和“泛知识专场”两场爆款公开课的讲座&a…

vscode中vue项目报错

当在vscode中写代码时,报错报错报错......... 已经头大,还没写就报错, 这是因为eslint对语法的要求太过严格导致的编译时,出现各种语法格式错误 我们打开vue.config.js,加上这句代码,就OK啦 lintOnSave:…

DDPM推导笔记

各位佬看文章之前,可以先去看看这个视频,并给这位up主点赞投币,这位佬讲解的太好了:大白话AI 1.前置知识的学习 1.1 正态分布特性 ​ (1)正态分布的概率密度函数 f ( x ) 1 2 π σ e − ( x − μ ) …

【深入解析spring cloud gateway】12 gateway参数调优与分析

本节主要对网关主要的一些参数做一些解释说明,并用压测工具测试一下网关的接口,通过压测来验证参数配置是否合理 一、连接池参数 参数示例 spring:application:name: gatewaycloud:gateway:# http连接设置httpclient:# 全局的响应超时时间&#xff0c…

aws-waf-cdn 基于规则组的永黑解决方案

1. 新建waf 规则组 2. 为规则组添加规则 根据需求创建不同的规则 3. waf中附加规则组 (此时规则组所有规则都会附加到waf中,但是不会永黑) 此刻,可以选择测试下规则是否生效,测试前确认保护资源绑定无误 4. 创建堆…

加密算法学习

最近在写一些加密的东西。所以就整理一下常见的加密算法。 欢迎帮助纠错,谢谢。 废话不多直接上图: 加密学习一级介绍描述常见算法常见算法细分非对称加密解释 非对称加密需要两个密钥:公钥 (publickey) 和私钥 (privatekey)。公钥和私钥是…

分子生成工具 - ResGen 评测

ResGen 模型是浙江大学药学院侯廷军老师课题组2023年发表在nature machine intelligence期刊上文章Nature Machine Intelligence | Volume 5 | September 2023 | 1020–1030,题目为:《ResGen is a pocket-aware 3D molecular generation model based on …

关于使用libnet时性能下降的问题分析

Libnet是一个用于构建和注入网络数据包的便携式框架。它提供了在IP层和链路层创建数据包的功能,以及一系列辅助和补充功能。Libnet非常适合编写网络工具和网络测试代码。一些使用libnet的项目包括arping、ettercap、ipguard、isic、nemesis、packit、tcptraceroute和…