PostgreSql 备份之 pg_probackup

假如想象 提交于 2021-02-12 08:42:22

PostgreSql 备份的软件(免费)的有不少,pgrman(之前有一篇写过), Barman (功能很强大,配置很复杂)。最近大佬微信公众号发布 pg_probackup 功能和ORACLE rman 相差无几。 


下面我们就来看看pg_probackup 何许人也。


pg_probackup是一款免费的postgresql 备份软件,目前支持到 postgresql 11 , 这是一名 RU 的 DEV 开发者开发的备份工具。作为postgresql 使用流行的国家,相关的软件也不少(日本,俄罗斯)。

这个小哥哥的其他产品也是很有名,例如 pg_pathman


安装很简单,安装了小哥哥的 repo

rpm -ivh http://repo.postgrespro.ru/pg_probackup/keys/pg_probackup-repo-centos.noarch.rpm


yum install pg_probackup-{11,10,9.6,9.5}


那这个备份软件到底对比其他的备份有什么优势


1 可以选择全备和增量备份方式,加速大库的备份速度

2 自动数据一致性检查和按需备份验证,无需实际的数据恢复
在多个并行线程上运行备份、恢复和验证进程

4 以压缩状态存储备份数据以节省磁盘空间

5 从备用服务器进行备份以避免主服务器上的额外负载

6 简化WAL日志归档的自定义命令

7 备份位于Postgres Pro数据目录之外的文件和目录,如配置文件或日志文件


增量备份会包含以下几种方式

1 页备份。在这种模式下,pg_probackup将扫描存档中的所有WAL文件,从上一次完全备份或增量备份开始。新创建的备份只包含在WAL记录中提到的页面。这要求自上一次备份以来的所有WAL文件都出现在WAL归档中。


2 增量备份。在此模式下,pg_probackup将读取数据目录中的所有数据文件,并仅复制自上次备份以来更改的页面。该模式不需要连续归档


PTRACK备份。在这种模式下,Postgres Pro动态跟踪页面更改。它的运行不需要连续归档。每当一个关系页被更新时,这个页就会被标记为这个关系的一个特殊的PTRACK位图。因为一个页面只需要PTRACK fork中的一个位,所以这样的位图非常小。跟踪意味着在数据库服务器操作上有一些较小的开销,但是可以显著加快增量备份。


需要注意的是进行备份的服务器和恢复的服务器必须通过block_size和wal_block_size参数兼容,并且具有相同的主版本号。




在安装完pg_probackup 后,第一个工作就是要初始化备份的目录

(rpm包安装完毕的需要在执行程序后面带需要备份数据库的版本号)

pg_probackup-11 init -B /pgdata/backup/

并且初始化的数据目录必须是空的,否则会报错,在初始化后,相关的目录会自动生成 wal  和 backup 目录


在初始化目录后需要,需要初始化需要备份的 instance ,也就是当前的服务器的postgresql 的 数据目录,并给这个当前的pg 备份的数据库一个 备份的目录名。

 pg_probackup-11 add-instance -B /pgdata/backup/ -D /pgdata/data/ --instance pg_test


其中有一点需要注意

备份目录必须属于数据库服务器的文件系统。启动pg_probackup的用户必须完全访问备份目录的内容。如果在BACKUP_PATH环境变量中指定备份目录的路径,则可以在运行pg_probackup命令时忽略相应的选项。



配置文件中需要对 archive_command 进行改变

archive_command = 'pg_probackup-11 archive-push -B /pgdata/backup --instance pg_test --wal-file-path %p --wal-file-name %f'

max_wal_senders = 10

hot_standby = on

full_page_writes = on


查看配置好的备份文件


pg_probackup-11 show-config -B /pgdata/backup/ --instance pg_test


在下面直接执行命令,备份test 库全量备份


 pg_probackup-11 backup -B /pgdata/backup/ -b full --instance pg_test -d test -h 192.168.198.123 -p 5432 -U admin -w




在全备完毕后还可以进行增量备份,如果不想输入秘密,则可以进行.pgpass免密操作

pg_probackup-11 backup -B /pgdata/backup/ -b page --instance pg_test -d test -h 192.168.198.123 -p 5432 -U admin -w



同时也可以查看备份的历史记录


也可以进行相关的备份后的 验证工作

同时对于目录中的备份的数据可以设置保留期限

 pg_probackup set-config -B /pgdata/backup/ --instance pg_test --retention-redundancy 2 --retention-window 7


--retention-redundancy=redundancy

保留备份多少天 FULL 

--retention-window=window

可恢复多少天之前备份


当然pg_probackup 的命令还有很多,建立一个集中化的备份中心(PG)的也可以通过pg_probackup 来完成,例如建立一台备份机,(磁盘的够大)

然后为不同的PG 的数据库建立备份的目录,并且通过远程的方式进行数据的备份,和数据的恢复。

同时,pg_probackup 也支持paralle 并行的方式进行数据备份,这样速度会更快


同时还可以使用autonomous备份在某些特殊的情况

自动备份可以在无法访问WAL archive的服务器上恢复。
自治备份使您能够在WAL文件不再可用时及时恢复集群状态。


在这些都做完之后我们可以恢复一次数据库


pg_probackup-11 restore -B /pgdata/backup/ --instance pg_test --recovery-target-time='2019-10-14 23:33:1


在恢复完数据库后,如果马上启动可能会报错


需要重新设置目录权限,才可以正常启动数据库




本文分享自微信公众号 - AustinDatabases(AustinDatabases)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!