Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >PostgreSQL从小白到高手教程 - 第41讲:postgres表空间备份与恢复

PostgreSQL从小白到高手教程 - 第41讲:postgres表空间备份与恢复

原创
作者头像
用户5892232
发布于 2024-01-12 03:07:11
发布于 2024-01-12 03:07:11
3410
举报

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

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

PostgreSQL第41讲:1月13日(周六)19:30直播

内容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数据库支持表空间的备份与完全恢复,不支持表空间下某个数据库的备份与恢复。

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
从小白到专家 PostgreSQL技术大讲堂 - Part 5:PG数据库结构
PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。
用户5892232
2023/01/11
7080
PostgreSQL从小白到高手教程 - 第38讲:数据库备份
PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。
用户5892232
2023/12/08
2880
PostgreSQL从小白到高手教程 - 第38讲:数据库备份
PostgreSQL 备份与恢复(第二章)
该备份工具自动执行 pg_start_backup()和 pg_stop_backup()函数,而且备份速度和数据都比手动的备份快。
DB之路
2021/07/15
2K0
PostgreSQL从入门到精通教程 - 第39讲:数据库完全恢复
PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。
用户5892232
2023/12/21
2650
PostgreSQL从入门到精通教程 - 第39讲:数据库完全恢复
PostgreSQL备份恢复实现
本文主要介绍pg_dump、pg_dumpall、copy、pg_basebackup的使用。
数据和云
2021/09/22
5.4K0
PostgreSQL备份恢复实现
Postgresql表空间
不同的数据库表空间有不同的定义: 在 postgres 中,表空间 允许在文件系统中定义数据库对象存储的位置,实质上就是指定了一个目录。 与数据库的关系 在 postgres 中,一个表空间可以让多个数据库使用,而一个数据库也可以使用多个表空间,属于“多对多”的关系; 在 oracle 中,一个表空间只属于一个数据库,而一个数据库可以使用多个表空间,属于“一对多”的关系。
DB之路
2021/07/06
1.8K0
oid2name列出PostgreSQL和对应的oid
PostgreSQL 提供 oid2name 客户端程序,用来解析数据目录里的文件,平常用得比较少,这里简单介绍下。
DB之路
2021/03/15
1.4K0
实战演练:PostgreSQL在线扩容
墨墨导读:最近被问到PG在线扩容的问题,本文整理了整个过程,之前写过一篇文章,供大家参考:《PosgreSQL三种表空间使用方式》https://www.modb.pro/db/14119。
数据和云
2020/06/17
1.6K0
PostgreSQL数据库体系架构
PostgreSQL数据库的进程可以分为三类:后台进程、后端进程或叫服务器进程、客户端进程或用户进程。
用户8006012
2022/06/10
4.3K1
PostgreSQL体系架构介绍
PostgreSQL是最像Oracle的开源数据库,我们可以拿Oracle来比较学习它的体系结构,比较容易理解。PostgreSQL的主要结构如下:
用户8006012
2022/07/26
2.3K0
【赵渝强老师】PostgreSQL的表空间
在PostgreSQL中,数据库在逻辑上分成多个存储单元,该单元称作表空间。表空间用作把逻辑上相关的数据结构放在一起。数据库逻辑上是由一个或多个表空间组成。在数据库初始化的时候,会自动创建pg_default和pg_global两个表空间。其中:
赵渝强老师
2024/11/29
1390
【赵渝强老师】PostgreSQL的表空间
pg_basebackup基础备份多表空间
多表空间基础备份需要使用–tablespace-mapping进行映射,特别是在同一机器对cluster做备份时
数据和云
2020/11/06
1.4K0
进阶数据库系列(二十):PostgreSQL 数据库备份与恢复
此种方式是直接备份数据库物理文件,在pg数据库里,这通常指的是PGDATA变量定义的文件夹,例如:
民工哥
2023/08/22
7.3K0
进阶数据库系列(二十):PostgreSQL 数据库备份与恢复
Postgresql存储结构
如果阅读过手册一定听过postgresql cluster的概念,第一次听到这个概念可能都会有一些困惑。cluster在安装数据库时,由initdb工具生成,initdb后产生的pgdata文件夹可以理解为cluster的物理存储结构。数据库启动、停止时pg_ctl -D参数指定的文件夹即cluster文件夹,所以一个PG Server可以运行在一个PG Cluster上。
mingjie
2022/05/12
1.2K0
Postgresql存储结构
数据库PostrageSQL-表空间
PostgreSQL中的表空间允许数据库管理员在文件系统中定义用来存放表示数据库对象的文件的位置。一旦被创建,表空间就可以在创建数据库对象时通过名称引用。
cwl_java
2020/12/16
9490
PostgreSQL 备份与恢复(第一章)
PostgreSQL官方文档指定了以下三种备份方法,详见:https://www.postgresql.org/docs/current/backup.html
DB之路
2021/07/14
9.8K0
原 使用pg_basebackup搭建PostgreSQL流复制环境
环境:     OS: [ha@node0 ~]$ uname -a Linux node0 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux     内存:1G     CPU:1核     数据库: postgres=# select version();
王果壳
2018/05/17
1K0
PostgreSQL的pg_basebackup备份恢复详解
备份 pg_basebackup -D /tmp/pg_backup/ -Ft -Pv -U postgres -h 1.15.57.253 -p5432 -R -D 空文件,没有该目录会自动创建 F 格式话 t 打包为tar包 Pv 显示备份的详细过程 -u 用户 -p 端口 备份报错: 在配置文件pg_hba.conf增加一行: 备份流程: pg_basebackup: initiating base backup, waiting for checkpoint to complete
数据和云
2022/02/25
3.7K0
PostgreSQL的pg_basebackup备份恢复详解
从零开始学PostgreSQL (六): 备份和恢复
PostgreSQL 提供了多种备份和恢复策略,旨在满足不同规模和需求的数据库环境。以下是 PostgreSQL 备份和恢复的主要方法概览:
DBA实战
2024/09/06
4410
从零开始学PostgreSQL (六): 备份和恢复
从零开始学PostgreSQL-工具篇: 备份与恢复
PostgreSQL 提供了一系列强大的工具来备份和恢复数据库。这些工具包括 pg_dump, pg_restore,pg_dumpall,pg_basebackup。下面是这些工具的简要概述和一些注意事项:
DBA实战
2024/09/13
3650
从零开始学PostgreSQL-工具篇: 备份与恢复
相关推荐
从小白到专家 PostgreSQL技术大讲堂 - Part 5:PG数据库结构
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文