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

news2024/12/23 5:55:06

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL进阶篇(六)InnoDB 引擎

一、逻辑存储结构 (1)表空间 表空间是 InnoDB 存储引擎逻辑结构的最高层, 如果用户启用了参数 innodb_file_per_table(在 8.0版本中默认开启) ,则每张表都会有一个表空间(xxx.ibd),一个 mysql 实…

【力扣·每日一题】2182.构造限制重复的字符串(模拟 贪心 优先队列 C++ Go)

题目链接 题意 给你一个字符串 s 和一个整数 repeatLimit ,用 s 中的字符构造一个新字符串 repeatLimitedString ,使任何字母 连续 出现的次数都不超过 repeatLimit 次。你不必使用 s 中的全部字符。 返回 字典序最大的 repeatLimitedString 。 如果…

Win11如何设置时间显示秒

1、打开注册表 计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced 2、进入以上路径 Advanced新建dword32位,新建一个文件,设置一个名称 3、修改之前创建的文件 4、重启电脑

【转载】MyBatisCodeHelperPro最新版使用教程

在开发中编写生成bean,mapper,mapper.xml费时也费力,可以通过MyBatisCodeHelper-Pro自动生成bean,dao,mapper.xml等文件。 MyBatisCodeHelper-Pro是IDEA下的一个插件,类似于mybatis plugin,但可…

小规模团队更适合什么样的客户管理系统?

小规模团队更适合什么样的客户管理系统? 一般情况下,小规模对客户管理系统的需求通常有以下特点: 团队规模:小规模,不超过10人——尽可能降低使用成本使用人员:销售人员使用——无代码基础,最…

pandas 多进程与并发

1. 背景 在大规模数据之间完成一些操作,往往会浪费大量的时间,为了充分利用软硬件资源,演化出了2种主流的优化方式,即“向量化” 和“并行化” 。 2. swifter swifter 是一款用于给使用在 pandas DataFrame 或者 Series 上的 fun…

解决flask中jinja2插值变量变成字符串的办法

今天在通过使用{{ variable_name }}这种方式插入html内容时,发现变量内容到了页面中全部变成了字符串, python代码: return render_template(FilePath.file_path_to_page,md_contenthtml_content # 返回html内容 )html代码中插入&#xff1…

【Linux】自定义shell

👑作者主页:@安 度 因 🏠学习社区:安度因 📖专栏链接:Linux 文章目录 获取命令行前置字段命令行输入解析命令行普通指令的执行子进程执行命令指令类型判断 && 内建命令总结 &&a

农业无人机行业分析:单年内作业量突破13亿亩次

面对我国18亿亩的耕地植保市场需求,未来我国植保无人机将依然保持快速发展态势,预计2022年我国植保无人机销量将增长至8万架。 植保无人机市场呈现爆发式增长,同时也吸引了不少企业进入,我们从2022年植保无人机企业网络热度榜中可…

重启阿里云ESC服务器后,数据库与jar包外面无法访问bug

bug 重启了服务器,发现从外面无法连接数据库 原因 使用firewall-cmd --list-all命令查看服务器防火墙的配置,发现没有开启3306端口的开放,虽然我们在安全组设置3306端口但是防火墙没有开启,外面是依然无法访问的。 firewall-cm…

计算机视觉开发工程师怎么考?报考难度大吗?证书含金量高吗?

为进一步贯彻落实中共中央印发《关于深化人才发展体制机制改革的意见》和国务院印发《关于“十四五”数字经济发展规划》等有关工作的部署要求,深入实施人才强国战略和创新驱动发展战略,加强全国数字化人才队伍建设,持续推进人工智能专业人员…

内存泄漏检测方式

一 、 日志记录 通过宏定义重载了 malloc 和 free 函数,以在分配和释放内存的时候记录一些信息,包括文件名和行号,并将这些信息写入到相应的文件中。然后在 main 函数中演示了使用这些宏进行内存分配和释放。 _malloc 函数: 在分配…

Markdown 流程图绘制详解

✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向) 🐳博客主页: 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN 🔔如果文章对您有一定的帮助请&#x1f…

二叉树的深度遍历

目录 深度优先遍历: 二叉树节点定义: 递归法: 前序 中序 后序 迭代法: 前序 中序 后序 迭代法(统一写法) 前序 中序 后序 广度优先遍历: 二叉树的遍历方法包括两种&#xff1a…

Vue创建项目配置情况

刚开始接触vue项目创建和运行因为node版本和插件版本不一致时长遇到刚装好插件,项目就跑不起来的情况,特此记录一下 vue -V vue/cli 5.0.8 node -v v12.22.12 npm -v 6.14.16 关闭驼峰命名检查、未使用语法检查 package.json文件内容: {&…

3dmax渲染出现马赛克该怎么办?

为什么渲染会出现马赛克问题呢,什么原因导致的呢,该如何解决呢? 原因一 3dmax渲染出来马赛克可能是因为勾选了 dont reder final image(不渲染最终图像),所以导致3dmax渲染出来马赛克。 解决方法: 打开渲染器设置菜…

web练习2

需求 1.计算用户指定的数值内的奇数和。例如用户输入的是10则计算13579的和 <!doctype html> <html lang"en"> <head><meta charset"utf-8"><title>作业1</title></head> <body> <script>//计算用…

迅软科技丨IT企业如何应对数据泄密危机?

随着信息技术的快速发展&#xff0c;软件IT行业面临着前所未有的数据安全挑战。黑客攻击、病毒传播、内部泄密等安全威胁层出不穷&#xff0c;给企业的核心资产和运营带来严重威胁。同时&#xff0c;国家对于数据安全的法律法规也日益严格&#xff0c;要求企业必须采取更加有效…

边缘计算的挑战和机遇(结合RDH-EI)

边缘计算的挑战和机遇 边缘计算面临着数据安全与隐私保护、网络稳定性等挑战&#xff0c;但同时也带来了更强的实时性和本地处理能力&#xff0c;为企业降低了成本和压力&#xff0c;提高了数据处理效率。因此&#xff0c;边缘计算既带来了挑战也带来了机遇&#xff0c;需要我…

瑞_Java开发手册_(七)设计规约

文章目录 设计规约的意义设计规约 &#x1f64a;前言&#xff1a;本文章为瑞_系列专栏之《Java开发手册》的设计规约篇。由于博主是从阿里的《Java开发手册》学习到Java的编程规约&#xff0c;所以本系列专栏主要以这本书进行讲解和拓展&#xff0c;有需要的小伙伴可以点击链接…