PostgreSQL备份工具pgBackRest完整介绍
PostgreSQL备份工具pgBackRest完整介绍
1. pgbackrest
下载地址:
https://github.com/pgbackrest/pgbackrest/releases
手册:https://pgbackrest.org/user-guide-rhel.html#introduction
前言
pgBackRest旨在提供一个简单可靠,容易纵向扩展的PostgreSQL备份恢复系统。pgBackRest并不依赖像tar和rsync这样的传统备份工具,而是通过在内部实现所有备份功能,并使用自定义协议来与远程系统进行通信。 消除对tar和rsync的依赖可以更好地解决特定于数据库的备份问题。 自定义远程协议提供了更多的灵活性,并限制执行备份所需的连接类型,从而提高安全性。
特性

并行备份和恢复
压缩通常是备份操作中的瓶颈,因此pgBackRest通过并行处理和更有效的压缩算法(如lz4和zstd)解决了这个问题。
本地或远程操作
自定义协议允许pgBackRest通过TLS/SSH进行本地或远程备份、恢复和归档,配置最少。通过协议层还提供了查询PostgreSQL的接口,因此不需要远程访问PostgreSQL,从而增强了安全性。
多个存储库
例如,多个存储库允许本地存储库保留最少的时间用于快速恢复,远程存储库保留较长的时间用于冗余和跨企业的访问。
完整、增量和差异备份
支持完整备份、差异备份和增量备份。
pgBackRest不受rsync的时间解决问题的影响,使差异和增量备份变得安全,而不需要对每个文件校验和。
备份轮换和存档过期
可以为完整备份和差异备份设置保留策略,以创建任何时间范围的覆盖。可以为所有备份维护WAL存档,也可以只维护最近的备份。在后一种情况下,使旧备份保持一致所需的WAL将在存档中维护。
备份的完整性
为备份中的每个文件计算校验和,并在恢复或验证期间重新检查。备份完成文件复制后,它将等待,直到使备份一致性所需的每个WAL段到达存储库。
存储库中的备份可以以与标准PostgreSQL集群(包括表空间)相同的格式存储。如果禁用压缩并且启用硬链接,则可以在存储库中对备份进行快照,并直接在快照上启动PostgreSQL集群。这对于以传统方式恢复需要花费大量时间的tb级数据库是有利的。
所有操作都使用文件和目录级别的fsync来确保持久性。
页面校验和
PostgreSQL从9.3开始支持页面级校验和。如果启用了页面校验和,pgBackRest将验证在备份期间复制的每个文件的校验和。在完全备份期间验证所有页校验和,在差异备份和增量备份期间验证已更改文件中的校验和。
验证失败不会停止备份过程,但是会将包含验证失败页面详细信息的警告输出到控制台和文件日志。
此功能允许在包含有效数据副本的备份过期之前及早检测到页级损坏。
备份恢复
中断的备份可以从它停止的位置恢复。将已复制的文件与清单中的校验和进行比较,以确保完整性。由于此操作可以完全在存储库主机上进行,因此它减少了PostgreSQL主机的负载并节省了时间,因为校验和计算比压缩和重传数据更快。
流式压缩和校验和
当文件被复制到存储库时,压缩和校验和计算在流中执行,无论存储库位于本地还是远程。
如果存储库位于存储库主机上,则在PostgreSQL主机上执行压缩,文件以压缩格式传输,并简单地存储在存储库主机上。当禁用压缩时,将使用较低级别的压缩来有效地利用可用带宽,同时将CPU成本保持在最低水平。
差异恢复
清单包含备份中每个文件的校验和,因此在恢复期间可以使用这些校验和来大大加快处理速度。在增量恢复中,首先删除备份中不存在的任何文件,然后为剩余文件生成校验和。与备份匹配的文件保留在适当的位置,其余的文件像往常一样恢复。并行处理可以大大减少恢复时间。
并行,异步WAL Push & Get
包含专用命令,用于将WAL推送到存档和从存档中获取WAL。这两个命令都支持并行以加速处理和异步运行,从而为PostgreSQL提供最快的响应时间。
WAL push会自动检测多次推送的WAL段,并在段相同时进行重复数据删除,否则会引发错误。异步WAL推送允许将传输卸载到另一个进程,该进程并行压缩WAL段以获得最大吞吐量。对于具有极高写容量的数据库来说,这可能是一个关键特性。
异步WAL get维护一个本地的WAL段队列,这些段被解压缩并准备重播。这减少了向PostgreSQL提供WAL所需的时间,从而最大限度地提高了重放速度。高延迟连接和存储(如S3)受益最大。
push和get命令都通过比较PostgreSQL版本和系统标识符来确保数据库和存储库匹配。这实际上消除了错误配置WAL存档位置的可能性。
表空间和链接支持
完全支持表空间,并且在恢复时可以将表空间重新映射到任何位置。还可以使用一个命令将所有表空间重新映射到一个位置,这对于开发恢复非常有用。
PostgreSQL集群中的任何文件或目录都支持文件和目录链接。在恢复时,可以将所有链接恢复到原始位置,重新映射部分或全部链接,或将部分或所有链接恢复为集群目录中的正常文件或目录。
S3、Azure和GCS兼容对象存储支持
pgBackRest存储库可以位于S3、Azure和GCS兼容的对象存储中,以允许几乎无限的容量和保留。
加密
pgBackRest可以加密存储库,以确保备份存储在任何地方。
兼容10个版本的PostgreSQL
pgBackRest支持10个版本的PostgreSQL, 5个支持的版本和最近5个EOL版本。这为升级到受支持的版本提供了充足的时间。
pgBackRest用户手册
1.简介
本用户指南旨在按顺序从头到尾遵循-每个部分都依赖于最后一部分。例如,还原部分依赖于在快速开始部分中执行的设置。一旦pgBackRest启动并运行,那么可以跳过,但建议第一次按照顺序使用用户指南。
尽管本指南中的示例针对的是RHEL 7-8和PostgreSQL 11,但是将这些示例应用于任何Unix发行版和PostgreSQL版本应该是相当容易的。唯一与操作系统相关的命令是那些创建、启动、停止和删除PostgreSQL集群的命令。pgBackRest命令在任何Unix系统上都是相同的,尽管可执行文件的位置可能不同。虽然pgBackRest努力在不同版本的PostgreSQL中保持一致,但不同版本的PostgreSQL之间存在细微的差异,这些差异可能会在本指南中举例说明,例如PostgreSQL路径/文件名和设置。
PostgreSQL的配置信息和文档可以在PostgreSQL手册中找到。
本用户指南采用了一种比较新颖的方法来编写文档。当从XML源构建文档时,每个命令都在虚拟机上运行。这意味着您可以高度确信命令按照所提供的顺序正确地工作。输出被捕获并在适当的时候显示在命令下面。如果没有包括输出,那是因为它被认为是不相关的,或者被认为是对叙述的分散。
所有命令都是作为具有root和postgres用户的sudo权限的非特权用户运行的。也可以直接以各自用户的身份运行这些命令而不进行修改,在这种情况下,可以剥离sudo命令。
2.概念
2.1备份
备份是数据库集群的一致副本,可以对其进行还原,以便从硬件故障中恢复、执行时间点恢复或启动新的备用服务器。
- 全量备份: pgBackRest将整个数据库集群的内容拷贝到备份中。数据库集群的第一次备份始终是完全备份。pgBackRest始终能够直接恢复全量备份。为了保持一致性,完全备份不依赖于完全备份之外的任何文件。
- 差异备份: pgBackRest只复制自上次全量备份以来发生变化的数据库集群文件。pgBackRest通过复制所选差异备份中的所有文件和先前完整备份中适当的未更改文件来恢复差异备份。差异备份的优点是它比完全备份需要更少的磁盘空间,但是,要恢复差异备份,差异备份和完全备份必须都是有效的。
- 增量备份: pgBackRest只复制自上次备份(可以是另一次增量备份、差异备份或完全备份)以来发生变化的数据库集群文件。由于增量备份只包括自上次备份以来更改的文件,因此它们通常比完整备份或差异备份小得多。与差异备份一样,增量备份依赖于其他备份才能有效地恢复增量备份。由于增量备份只包括上次备份以来的那些文件,因此,要执行增量备份的恢复,必须对返回到先前差异备份、先前差异备份和先前完全备份的所有先前增量备份都有效。如果不存在差异备份,则所有先前的增量备份都将返回到先前的完整备份(必须存在),并且完整备份本身必须有效才能恢复增量备份。
2.2恢复
还原是将备份复制到将作为活动数据库集群启动的系统的行为。恢复需要备份文件和一个或多个WAL段才能正常工作。
2.3预写日志(WAL)
WAL是PostgreSQL用来确保没有提交的更改丢失的机制。事务按顺序写入到WAL中,当这些写刷新到磁盘时,就认为事务已提交。之后,后台进程将更改写入主数据库集群文件(也称为堆)。在发生崩溃时,将重放WAL以使数据库保持一致。
WAL在概念上是无限的,但在实践中被分解成单独的16MB文件,称为段。WAL段遵循命名约定0000000100000A1E000000FE,其中前8个十六进制数字表示时间线,后16个数字是逻辑序列号(LSN)。
2.4 加密
加密是将数据转换为除非提供适当的密码(也称为密码短语) 否则无法识别的格式的过程。
pgBackRest将根据用户提供的密码对存储库进行加密,从而防止对存储库中的数据进行未经授权的访问。
安装
依赖包安装
yum -y install libdbd-pg-perl libio-socket-ssl-perl libxml-libxml-perl
-- 简单安装
~~# cent-os
sudo yum install -y pgbackrest
# ubuntu
sudo apt-get install libdbd-pg-perl libio-socket-ssl-perl libxml-libxml-perl~~3
pgBackRest是用Perl编写的,默认包含在Debian/Ubuntu中。一些额外的模块也必须安装,但是它们可以作为标准包使用
cd /iihero/source/pgbackrest-release-2.46/src
sudo ./configure && make -j 4 && make install
【转】PostgreSQL备份工具: pgBackRest完整介绍
https://blog.51cto.com/lee90/6644352

浙公网安备 33010602011771号