kaiyun全站网页版登录 PostgreSQL从入门到精通教程 - 第39讲:数据库完全恢复

发布于:25-08-02 播放次数:

recovery备份系统还原_PostgreSQL数据库完全恢复教程_PostgreSQL介质恢复方法

从新手成长为PostgreSQL领域的专家,这一系列教程旨在逐步提升您的技能,涵盖了从基础认知到安装使用,再到角色权限、维护管理等多个方面。我们衷心希望这些内容能为那些热爱并致力于学习PostgreSQL的朋友们提供助力,并诚挚邀请您继续关注CUUG PG技术大讲堂。

第39讲:数据库完全恢复

12月23日(周六)晚上7点半,PostgreSQL的第39讲将在钉钉群(群号:35822460)以及视频号(数据库老陈)同步进行直播。

内容1:描述介质恢复

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

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

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

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

介质恢复

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

需要显式调用

操作如下:

从备份中恢复文件

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

恢复步骤

PostgreSQL介质恢复方法_recovery备份系统还原_PostgreSQL数据库完全恢复教程

执行数据文件转储和恢复

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

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

非归档模式恢复

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

所有位于$PGDATA目录中的子目录,包括base、global以及pg_wal等,均不得进行修改。

所有位于$PGDATA目录中的文件,包括postgresql.conf、pg_hba.conf等,均不得随意修改。

非归档模式恢复优缺点

优势

易于执行,出错风险低

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

缺点

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

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

非归档模式恢复

PostgreSQL介质恢复方法_recovery备份系统还原_PostgreSQL数据库完全恢复教程

归档模式恢复

完全恢复

使用wal数据或增量备份

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

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

不完全恢复

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

完全恢复

确认数据库关闭

恢复数据文件

即便是在进行全库备份的情况下,就算只是单个数据文件出现了损坏,也必须对所有的转储备份数据文件进行操作。

若仅为特定空间(非全局空间)进行备份,即便该空间下的单个数据文件遭受损害,亦需对全部备份数据文件进行转储。

修改postgresql.conf文件

生成recovery.signal空文件

启动数据库(recovery)

归档模式完全恢复优缺点

优势

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

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

缺点

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

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

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

1、使用tar包进行恢复

执行以下命令以解压备份文件:使用tar命令,以详细模式(-zvxf)解压位于/backup目录下的base.tar.gz文件,并将解压内容复制到$PGDATA目录中。

2、修改postgresql.conf文件

恢复命令为:复制/home/postgres/archives/目录下的文件到目标路径%p,具体文件名为%f。

恢复目标时间表设定为最新版本。

3、生成recovery.signal空文件

touch recovery.signal

4、启动数据库

pg_ctl start

时间线和时间线历史文件

timelineId(时间线)

每次完成全面或局部的数据恢复后,数据库的时间线都会随之更新开yun体育app官网网页登录入口,这标志着数据从故障点之后重启了新的发展轨迹,并且会借助时间线历史文件进行记录。

PostgreSQL数据库完全恢复教程_recovery备份系统还原_PostgreSQL介质恢复方法

timelineId 和 wal文件名关系

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

数据库恢复作业完成后,将生成新的wal文件。该文件的命名方式是在原有段文件名的基础上云开·全站体育app登录,将旧的时间线替换为新的时间线,其余部分保持不变。

PostgreSQL介质恢复方法_recovery备份系统还原_PostgreSQL数据库完全恢复教程

时间线和时间线历史文件

Timeline History File

历史记录文件将被创建于pg_wal中,并且会同步至归档文件夹内kaiyun.ccm,其命名规范详见以下说明。

“由八位数字构成的新时间线标识符”的记录,例如:00000002的记录。

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

timelineId,即用于恢复归档日志的特定时间线标识符。

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

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

比如:postgres> cat

位于/home目录下的postgres用户文件夹中的archivelogs子目录内,存在一个名为00000002.history的文件。