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 自动数据一致性检查和按需备份验证,无需实际的数据恢复 3 在多个并行线程上运行备份、恢复和验证进程
4 以压缩状态存储备份数据以节省磁盘空间
5 从备用服务器进行备份以避免主服务器上的额外负载
6 简化WAL日志归档的自定义命令
7 备份位于Postgres Pro数据目录之外的文件和目录,如配置文件或日志文件
增量备份会包含以下几种方式
1 页备份。在这种模式下,pg_probackup将扫描存档中的所有WAL文件,从上一次完全备份或增量备份开始。新创建的备份只包含在WAL记录中提到的页面。这要求自上一次备份以来的所有WAL文件都出现在WAL归档中。
2 增量备份。在此模式下,pg_probackup将读取数据目录中的所有数据文件,并仅复制自上次备份以来更改的页面。该模式不需要连续归档
3 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
在恢复完数据库后,如果马上启动可能会报错
需要重新设置目录权限,才可以正常启动数据库