当前位置: fljsyy->postgresql > PostgreSQL技术大讲堂 - 第41讲:表空间备份与恢复

PostgreSQL技术大讲堂 - 第41讲:表空间备份与恢复

2024-01-29作者:fljsyy来源:www.fljsyy.com


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


第41讲:表空间备份与恢复


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

内容1:表空间备份与恢复的意义

内容2:PostgreSQL表空间概念

内容3:基于表空间备份

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


表空间备份与恢复的意义

PostgreSQL数据库备份所存在的问题:

1、PG备份工具备份的总是整个数据目录,数据量大,备份时间长。

2、PG备份工具恢复时总是恢复整个数据目录,数据量大,恢复时间长。

3、使用表空间的备份与恢复,可以减少备份数据,缩短备份与恢复的时间。


Tablespaces

· PostgreSQL中的表空间是基本目录之外的附加数据区域,此功能已在版本8.0中实现。

· 初始化数据库后默认的表空间有pg_default、pg_global。

· pg_global表空间的物理文件位置在数据目录的global目录中,它用来保存系统表。

· pg_default表空间的物理文件位置在数据目录的base子目录中,是template0和template1数据库的默认表空间。

· 创建数据库时,默认从template1数据库进行克隆,因此除非特别指定了新建数据库的表空间,否则默认使用template1使用的表空间,即pg_default表空间。


PostgreSQL表空间物理文件位置


创建表空间时产生的目录命名规则:

PG _ 'Major version' _ 'Catalogue version number'

例如:

sampledb=# create tablespace new_tblspc location '/home/postgres/tblspc';

$ ls -l /home/postgres/tblspc/

total 4

drwx------ 4 postgres postgres PG_12_201909212


新建表空间的目录由pg_tblspc子目录中的软链接寻址,链接名与表空间的OID值相同。

postgres=# select oid,spcname from pg_tablespace;

oid | spcname

-------+------------

1663 | pg_default

1664 | pg_global

90208 | new_tblspc

(3 rows)

$ ls -l $PGDATA/pg_tblspc/

total 0

lrwxrwxrwx. 1 postgres postgres 90208 -> /home/postgres/tblspc


· 如果在表空间下创建一个新的数据库(OID是90209),那么它的目录将在版本特定的子目录下创建:

ls -l /home/postgres/tblspc/PG_12_201909212

total 4

drwxr-x---. 2 postgres postgres 4096 Mar 30 09:27 90209

· 在base目录下创建的数据库上创建新表指定到新建的表空间:

testdb=# create table test1 (id int) tablespace new_tblspc;

testdb=# SELECT pg_relation_filepath('test1');

pg_relation_filepath

---------------------------------------------

pg_tblspc/90208/PG_12_201909212/16385/90210 #在新表空间目录下创建数据库目录


执行pg_basebackup备份

示例

产生压缩的tar包,-Ft参数指定:

pg_basebackup -D bk1 -Ft -z -P

此备份花的时间比较长,但是节省空间。支持表空间文件存放在其它目录下。

产生跟源文件一样的格式,即原样格式,-Fp参数指定:

pg_basebackup -D bk2 -Fp -P

此备份方式很快,但是不节省空间。如果有表空间路径放在其它目录下,则备份失败。


执行表空间备份

示例

数据库中执行开始备份函数

select pg_start_backup('tbs');

使用tar命令进行备份(备份tblspc表空间所在的目录)

cp -rf /home/postgres/tblspc /home/postgres/bk1

cp $PGDATA/backup_lable /home/postgres/bk1

数据库中执行结束备份函数

select pg_stop_backup();


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

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


总结

PostgreSQL数据库支持表空间的备份与完全恢复,不支持表空间下某个数据库的备份与恢复。

备份与恢复时针对的是整个表空间所在的目录。

执行表空间恢复后数据库正常使用,数据完整,证明表空间备份恢复是可行的。

CUUG PostgreSQL技术大讲堂系列公开课第41讲-表空间备份与恢复,往期视频及文档,请联系CUUG。

  • 11月16日,工信部人才交流中心 & CUUG - PGCP+PGCM认证考试完成
  • 2024年11月14日,工信人才发布红头文件:PostgreSQL数据库管理人才研修与评测班
  • 【会议回顾】11月29日,国产开源数据库PolarDB&PG专家训练营 - 北京站
  • PostgreSQL认证考试费用分析
  • 11月30日,工信部人才交流中心 & CUUG - PGCPPGCM认证考试完成!
  • 2024年12月PostgreSQL排名第四,已对SQL Server造成威胁
  • PostgreSQL技术大讲堂 - 第72讲:索引与SQL调优之禁忌之恋
  • PostgreSQL技术大讲堂 - 第69讲:PG17版本新特性--块级别增量备份
  • 这么多家厂商都选择了PostgreSQL,是时候考个PG认证了
  • OCP认证考试哪家机构划算
  • Oracle认证证书的考试费用是多少
  • 恭喜CUUG 高同学通过Oracle考试获得OCP 19c证书
  • 靠谱的OCP培训机构推荐_北京CUUG
  • 去 IOE 环境下,Oracle OCM认证还值得考吗?
  • 腾讯云tdsql认证的优势和考试费用
  • 活动报名 《国产开源数据库PolarDB+PostgreSQL专家训练营》北京站
  • 金仓数据库认证值得考吗
  • 选择PGCA认证,还是选择PGCP认证
  • PostgreSQL技术大讲堂 - 第73讲:AI4DB系列公开课--搭建私域大模型
  • 百期PostgreSQL技术公开课进行时,已讲到第73期了
  • 如何建设国内postgresql数据库生态环境
  • ocp认证烂大街了吗?并未烂大街
  • 在去Oracle环境下,市场还认可OCP认证吗?
  • 工业和信息化部人才交流中心关于培训考试评价证书更名的通告
  • 签约!北京某大型档案馆、成都市某科研所与CUUG签约工信人才PG认证学习
  • PostgreSQL技术大讲堂 - 第75讲:SQL调优(3)索引调优升级版
  • PostgreSQL技术大讲堂 - 第76讲:调优(4)分区表索引调优
  • PostgreSQL与MySQL相似之处与不同之处
  • 免费学习PostgreSQL,来这里看看PG从小白到专家技术公开课
  • 【重磅消息】Oracle OCP 认证考试,CUUG赠送一次免费补考机会!
  • 12月6日恭喜CUUG郑同学通过OCP考试获得OCP证书
  • OCM认证烂大街了吗?OCM战袍在此,永不过时!
  • 报名OCP认证考试,送一次免费补考机会,限时活动,名额有限!
  • 恭喜CUUG韩同学通过Oracle考试拿到OCP 19c证书
  • PostgreSQL技术大讲堂 - 第77讲:DB4AI 搭建PG向量数据库AI机器人
  • PostgreSQL技术大讲堂 - 第78讲:分布式数据库-GreenPlum应用实践
  • PostgreSQL技术大讲堂 - 第79讲:PG流复制管理利器repmgr应用实践
  • PostgreSQL数据库管理员认证的含金量
  • 1月15日证书来啦!工信部人才交流中心PostgreSQL中级高级认证
  • OCP英文全称是什么
  • PolarDB PostgreSQL版高可用原理分析
  • 工信部人才交流中心与教育部学生服务与素质发展中心战略合作
  • 为什么说开展信创数据库势在必行
  • PostgreSQL技术大讲堂 - 第74讲:PostgreSQL SQL调优二
  • 恭喜CUUG 11月16日考试的同学获得PG中级、PG高级证书
  • 推动国内信创数据库发展,考取信创PostgreSQL认证
  • 为什么要发展信创数据库-信创PostgreSQL认证
  • PolarDB for PostgreSQL:OSS 外表
  • 中科方德「方德高可信服务操作系统」通过PolarDB产品生态集成认证
  • OCP是什么意思 OCP有用吗