已经很久没有发文章了,主要是最近工作上的内容都不适合发文章公开。可能往后文章发表也不这么频繁了,不过大家有问题我们可以交流。之前有写过PG增量备份的其他工具使用方法,pg_probackup也是应用比较多的PG备份工具。

一. pg_probackup


pg_probackup 是一个用于管理 PostgreSQL 数据库集群备份与恢复的实用工具,截止2.5.15版本,支持 PostgreSQL 11-16 及以上版本。它能够执行定期备份,并在故障发生时帮助恢复服务器。

pg_probackup实用程序基于pg_arman,它最初由NTT编写,然后由Michael Paquier开发和维护。

作为 PostgreSQL 官方扩展工具之一,pg_probackup 相比其他备份方案具备以下优势:


🔁 多样化增量备份模式

支持三种增量备份方式:

  • DELTA 模式:读取整个数据目录,仅复制变更页,减少写入量。
  • PAGE 模式:基于 WAL 分析提取变更页,节省空间,但依赖完整归档。
  • PTRACK 模式:通过 PostgreSQL 内建的 page tracking 位图追踪变更,速度最快,对系统性能影响最小。

🚀 快速恢复

  • 增量恢复(Incremental Restore):跳过未变更的页,提高恢复效率。
  • 部分恢复(Partial Restore):可选择仅恢复某个数据库,而非整个集群。
  • Catchup 功能:用于让落后的 Standby 节点快速追上主节点。

✅ 验证与一致性检查

  • 自动校验(Validation):备份过程中进行数据一致性检查,支持离线验证。
  • 实例验证(Verification):通过 checkdb 命令对 PostgreSQL 实例进行完整性验证。

📦 高效的存储与空间管理

  • 压缩(Compression):备份数据支持压缩,节省磁盘空间。
  • 去重(Deduplication):自动排除未变化的非数据页(如 _vm_fsm)。
  • 备份保留策略(Retention Policy)
    • 支持基于时间点(recovery window)或保留备份数量。
    • 可配置 TTL(生命周期)来控制备份过期。
    • 过期备份支持自动合并或删除。

⚙️ 高性能执行与并发支持

  • 所有核心操作(如备份、恢复、校验、删除等)均支持多线程并行处理,大幅提升性能。

🌐 远程与灵活备份源支持

  • 支持远程 PostgreSQL 实例的备份与恢复,无需在本地操作。
  • 可从 Standby 节点 执行备份,减轻主节点负载。
  • 可备份 PGDATA 之外的目录(如配置文件、脚本、日志、SQL 文件等)。

📁 集中备份目录与元数据管理

  • 使用统一的 Backup Catalog 管理多个 PostgreSQL 实例的备份与 WAL。
  • 提供 JSON 或纯文本格式 的备份/归档信息,便于脚本调用和可视化集成。

🛡️ 强一致性保障

所有备份均为 物理在线备份,确保数据一致性。支持两种 WAL 捕获方式:

  • ARCHIVE 模式:依赖持续 WAL 归档进行恢复(默认模式)。
  • STREAM 模式:通过复制协议实时抓取 WAL,形成自治型(standalone)备份,适用于未启用归档的环境。

pg_probackup 使用的前置要求

限制描述
支持的 PostgreSQL 版本pg_probackup 仅支持 PostgreSQL 9.5 及更高版本。
Windows 系统的限制Windows 系统不支持远程模式。
PostgreSQL 11 的备份要求在 Unix 系统上,对于 PostgreSQL 11,备份只能由启动 PostgreSQL 服务器的同一个操作系统用户执行。例如,如果 PostgreSQL 由用户 postgres 启动,则备份命令也必须由用户 postgres 执行。在使用 SSH 远程模式时,必须设置 --remote-user 选项为 postgres
PostgreSQL 9.5 的备份要求对于 PostgreSQL 9.5,函数 pg_create_restore_point(text)pg_switch_xlog() 只有当备份角色是超级用户时才能执行。因此,使用非超级用户角色备份流量较少的集群时,备份可能会比使用超级用户角色时更慢。
备份与恢复服务器的兼容性从 PostgreSQL 服务器中获取的备份与被恢复的服务器必须在 block_sizewal_block_size 参数上兼容,并且必须具有相同的主版本号。根据集群配置,PostgreSQL 本身可能会施加额外的限制,如 CPU 架构或 libc/icu 版本等。

安装部署

通过github下载其pg_probackup源码包
执行源码编译安装。需要可读取pg_config指令。

su - postgres  ## 使用postgres用户 避免其他用户安装破环目录权限问题tar -zxvf pg_probackup-2.5.15.tar.gz 
cd pg_probackup-2.5.15/
make USE_PGXS=1 PG_CONFIG=/home/postgres/pg/bin/pg_config  top_srcdir=/home/postgres/postgresql-16.3
make USE_PGXS=1 PG_CONFIG=/home/postgres/pg/bin/pg_config  top_srcdir=/home/postgres/postgresql-16.3  install ## top_srcdir 参数指定得是YODB的源码包位置
## USE_PGXS=1 使用 PGXS 外部扩展构建模式

创建初始化目录适用独立得目录为其备份

#创建备份目录
mkdir -p   /home/postgres/backup
##初始化备份目录(pg_probackup会自动创建对应得backups、wal的分类

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云手机主要是指什么?

云手机是指一种可以运行在云服务器中的手机,主要是将云计算技术运用于网络终端服务,通过云服务器来实现云服务的手机,也是一款深度结合了网络服务的手机,通过自带的系统和网络终端可以通过网络实现众多功能。 那么,下面…

CAU数据挖掘 支持向量机

SVM大致思想 线性分类问题 在一群点中用线性函数分类: 但也有线性不可分问题: 线性不可分问题: 最大间隔法 两个平行超平面间隔距离最大 软间隔 部分难以区分的点忽略 升维 通过升维将非线性变为线性 计算统计理论基础 学习过…

探索理解 Spring AI Advisors:构建可扩展的 AI 应用

Spring AI Advisors API 提供了一种灵活且强大的方式来拦截、修改和增强 Spring 应用程序中的 AI 驱动交互。其核心思想类似于 Spring AOP(面向切面编程)中的“通知”(Advice),允许开发者在不修改核心业务逻辑的情况下…

Linux SSH服务全面配置指南:从基础到安全加固

Linux SSH服务全面配置指南:从基础到安全加固 概述 作为网络安全工程师,SSH(Secure Shell)服务的安全配置是我们日常工作中不可忽视的重要环节。本文将从基础配置到高级安全加固,全面解析SSH服务的各项参数&#xff…

.NET测试工具Parasoft dotTEST内置安全标准,编码合规更高效

在追求开发速度的时代,确保代码安全并满足严苛的行业合规标准如OWASP、CWE、PCI DSS、ISO 26262等已成为开发者的核心挑战,但开发人员常因复杂的编码标准和漏洞排查而效率低下。.NET测试工具Parasoft dotTEST内置安全标准,实现即插即用&#…

对象的finalization机制Test

Java语言提供了对象终止(finalization)机制来允许开发人员自定义对象被销毁之前的处理逻辑。当垃圾回收器发现没有引用指向一个对象时,通常接下来要做的就是垃圾回收,即清除该对象,而finalization机制使得在清除此对象之前,总会先…

AI初学者如何对大模型进行微调?——零基础保姆级实战指南

仅需8GB显存,三步完成个人专属大模型训练 四步实战:从环境配置到模型发布 步骤1:云端环境搭建(10分钟) 推荐使用阿里魔塔ModelScope免费GPU资源: # 注册后执行环境初始化 pip3 install --upgrade pip pi…

“单一职责”模式之装饰器模式

目录 “单一职责”模式装饰器模式 Decorator引例动机 Motivation模式定义结构 Structure要点总结 “单一职责”模式 在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重…

idea, CreateProcess error=206, 文件名或扩展名太长

idea, CreateProcess error206, 文件名或扩展名太长 解决 “CreateProcess error206, 文件名或扩展名太长” 错误 CreateProcess error206 是 Windows 系统特有的错误,表示命令行参数超出了 Windows 的 32767 字符限制。这个问题在 Java 开发中尤其常见&#xff0c…

一键高效率图片MD5修改工具PHP版

文章目录 图片MD5修改工具项目简介功能特点技术原理系统需求安装方法使用方法Web界面模式命令行模式文件结构常见问题注意事项开发者信息效果演示更多干货🎁1.如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “👍点赞” “✍️评论” “💙收藏” 一键三连哦!2.❤️…

跨主机用 Docker Compose 部署 PostgreSQL + PostGIS 主从

q下面是跨主机用 Docker Compose 部署 PostgreSQL PostGIS 主从复制的完整详细步骤(主库 从库),主从都用官方 PostGIS 镜像 postgis/postgis:15-3.3,并注意网络与持久化。复制即可。 🚩 跨主机 PostgreSQL PostGIS …

会议动态|千眼狼高速摄像机、DIC测量系统等科学仪器亮相第十五届全国爆炸力学学术会议

第十五届全国爆炸力学学术会议于6月28日在绍兴盛大召开,会议汇聚来自全国爆炸力学与冲击领域专家学者2000余人,聚焦“爆炸与冲击动力学工程应用”、“材料动态力学行为与损伤断裂“、“工程爆破与毁伤评估”、“含能材料与水中爆炸”、“结构动态响应与安…

vscode一个文件夹有残余的git仓库文件,已经失效了,怎样进行清空仓库残余文件并重新初始化git--ubuntu

vscode一个文件夹有残余的git仓库文件,已经失效了,怎样进行清空仓库残余文件并重新初始化git–ubuntu 首先要把工作区里重要的文件备份好,防止操作时数据丢失。删除.git文件夹 rm -rf .git初始化 (base) zd4090zd4090-System-Product-Name:…

6月30日作业

思维导图 一、读取文件&#xff0c;效果类似 cat 的功能 代码 #include <25041head.h>int main(int argc, const char *argv[]) {//打开文件printf("请输入你要读取的文件路径&#xff1a;");char str[128]"";scanf("%s",str);FILE *fpf…

ubuntu源码安装python3.13遇到Could not build the ssl module!解决方法

我在Ubuntu 24.04.2 LTS下载源码安装Python 3.13.5时&#xff1a; #./configure --enable-loadable-sqlite-extensions --enable-optimizations #make 显示错误信息&#xff1a; Could not build the ssl module! Python requires a OpenSSL 1.1.1 or newer 查询我的openssl版…

Ai工具分享(2):Vscode+Cline无限免费的使用教程

大家好,我是程序员寒山。 今天给大家分享一个最新的免费使用的Ai插件Cline的方法,之前也给大家分享过一些免费的方案,但是这些都是随时在变化,之前推荐的很多都不能使用了。 Ai工具分享(2):Vscode+Cline无限免费的使用教 今天再给大家推荐一个,可以免费使用,且没有token…

Docker 目录迁移脚本【Windows Junction 类型链接】

Docker 目录迁移脚本完整教程&#xff1a;从诞生到自动化使用 一、脚本诞生背景与开发历程 1. 为什么需要迁移 Docker 目录&#xff1f; 系统盘空间压力&#xff1a;Docker 镜像和容器数据通常存储在C:\Users\用户名目录下&#xff0c;随着使用时间增长会占用大量系统盘空间…

spring-ai 工作流

目录 工作流概念工作流程图spring-boot 编码定义节点 (Node)定义节点图StateGraphcontroller测试浏览器测试用户输入 工作流概念 工作流是以相对固化的模式来人为地拆解任务&#xff0c;将一个大任务拆解为包含多个分支的固化流程。工作流的优势是确定性强&#xff0c;模型作为…

重头开始学ROS(6)---Eigen库安装与使用

Eigen库 矩阵运算是一种非常重要的运算方式&#xff0c;在Matlab中&#xff0c;矩阵运算可以轻松的实现&#xff0c;但在C这种偏底层的语言中&#xff0c;若不借助第三方库&#xff0c;矩阵运算需要我们进行较为复杂的代码设计。Eigen库是一个用于线性运算的C模板库&#xff0…

【STM32】外部中断

STM32 外部中断&#xff08;EXTI&#xff09;概述 这篇文章结合示例代码&#xff0c;系统性地讲述 STM32 外部中断&#xff08;EXTI&#xff09;实验的原理、以及配置流程。目的在于辅助读者掌握STM32F1 外部中断机制。 STM32F1xx官方资料&#xff1a;《STM32中文参考手册V10》…