postGRESQL 创建数据库权限(PostgreSQL从入门到精通教程 - 第39讲:数据库完全恢复)

wufei123 发布于 2024-01-16 阅读(161)

php零基础入门

原标题: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...

所有$PGD源码ATA目录下的文件 postgresql.conf、pg_hba.conf...非归档模式恢复优缺点优势易于执行,出错风险低恢复时间是转储所有文件所需的时间缺点数据丢失,必须手动重新应用整个数据库将恢源码复到上一次完整关闭备份的位置

非归档模式恢复

归档模式恢复完全恢复使用wal数据或增量备份将数据库更新到最新的时间点应用所有wal日志记录的更改不完全恢复使用备份和wal日志生成数据库的非当前版本完全恢复源码确认数据库关闭恢复数据文件如果是全库备份,哪怕是损坏了一个数据文件,也要转储备份的所有数据文件

如果是单独表空间(除了global)备份,哪怕损坏了表空间下的一个数据文件,也要转储备份的所有数据文件修改源码postgresql.conf文件生成recovery.signal空文件启动数据库(recovery)

归档模式完全恢复优缺点优势将所有数据恢复到最新点(故障点)恢复时间是转储数据文件和应用所有归档日源码志文件所需的时间缺点必须具有自您要从中恢复的备份以来的所有归档日志文件执行一个基于数据库备份的完全恢复示例(恢复前备份pg_wal目录下所有文件)

1、使用tar包进行恢复tar -zvxf /back源码up/base.tar.gz -C $PGDATA2、修改postgresql.conf文件restore_command = cp /home/postgres/archives/%f %p

reco源码very_target_timeline = latest3、生成recovery.signal空文件touch recovery.signal4、启动数据库pg_ctl start时间线和时间线历史源码文件

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

timelineId 和 wal文件名源码关系时间线的改变导致wal名字发生变化当完成对数据库的恢复后,会产生新的wal文件,其命名规则为在原来的段文件名字中用新的时间线替换原来的时间线,其它不变。

时间线和时间线历史文件Timeline Hi源码story File历史文件会在pg_wal中生成,同时复制到归档目录下,命名规则如下所示:“8-digit new timelineId”.history 比如:00000002.history

时间源码线历史记录文件至少包含一行,每行由以下三项组成:timelineId –用于恢复的归档日志的timelineIdLSN –发生WAL段切换的LSN位置reason –人类可读的时间线为什么改变的解释。源码

比如:postgres> cat /home/postgres/archivelogs/00000002.history0/A000198before 2020-4-28 12:05:00.86132源码4+00

注意上面1是行号,也代表数据库恢复过的次数这个文件不要删除,否则会影响数据库恢复执行一个基于表空间备份的完全恢复PG支持基于表空间(除了pg_global之外)级别的完全恢复,因为pg_glo源码bal表空间比较特殊,其中包括控制文件,而控制文件不能使用备份的进行恢复。

1、转储备份的表空间目录到目标位置cp -rf /backup/PG_12_201909212 /home/postgres/源码tblspc/2、转储backup_lable文件到$PGDATA目录下cp /backup/backup_lable $PGDATA

3、创建recovery.signal4、修改postgresql源码.conf文件restore_command = cp /home/postgres/archives/%f %precovery_target_timeline = latest

5、启动数据库,表空源码间所包含的表能够实现完全恢复pg_ctl start只读数据库的恢复

执行一个只读数据库的恢复1、把数据库变成只读状态ALTER DATABASE new_db1 SET default_transac源码tion_read_only=on;2、单独备份new_db1数据库目录

3、如果new_db1数据库目录损坏,关闭数据库,转储备份的目录到目标位置4、打开数据库*PG不支持单个数据库完全恢复CUUG 源码PostgreSQL技术大讲堂系列公开课,往期视频及文档,请联系CUUG客服。

返回搜狐,查看更多责任编辑:

亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您源码交流。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。