pgbackrest备份方案(差异和增量备份的区别)
一 备份
全量备份:
将数据库集群的全部内容复制到备份中。数据库集群的第一个备份始终是全量备份。始终能够直接还原全量备份。全量备份不依赖于完整备份之外的任何文件来保持一致性。
差异备份:
仅复制自上次全量备份以来已更改的那些数据库集群文件。通过复制所选差异备份中的所有文件以及先前全量备份中的相应未更改文件来还原差异备份。差异备份的优点在于,与全量备份相比,它需要的磁盘空间更少,但是,差异备份和全量备份都必须有效才能还原差异备份。
增量备份:
仅复制自上次备份(可以是另一个增量备份,差异备份或全量备份)以来发生更改的那些数据库集群文件。由于增量备份仅包括自上次备份以来已更改的文件,因此它们通常比全量备份或差异备份小得多。与差异备份一样,增量备份依赖于其他备份才能有效还原增量备份。由于增量备份仅包括自上次备份以来的那些文件,因此,所有先前的增量备份(回到先前的差异备份),先前的差异备份和先前的全量备份都必须有效,才能执行增量备份的还原。如果不存在差异备份,则所有先前的所有增量备份都将还原为必须存在的先前的完整备份,并且完整备份本身必须有效才能还原增量备份。
二 差异备份和增量备份对比
全量备份+差异备份 | 全量备份+增量备份 | |
---|---|---|
情景 | 周一全备,周二差异,周三差异,周四差异 周五出问题 | 周一全备,周二增量 周三增量,周四增量,周五出问题 |
定义 | 备份自上次完整备份之后所有的更改 | 只备份自上次备份(完整,差异,增量)之后修改的数据 |
备份时间 | 较长 | 较短 |
备份空间 | 较大 | 较小 |
恢复时间 | 较快 | 较慢 |
恢复过程 | 周一全备+周四差异 可达到目的 | 周一全备+周二增量+周三增量+周四增量 可达到目的 |
注:
若保存到磁带上,那么更推荐全备+差异备份的方式,磁带的物理性能不稳定,选取增量备份方式,任一磁带坏了都无法全部恢复
pgbackrest备份的还原是通过执行命令,程序自动调度实现
总结:
全量备份+差异备份 备份数据需要较多的时间,但还原数据使用较少的时间。
全量备份+增量备份 备份数据需要较少的时间,但还原数据使用较多的时间。
三 备份策略配置
第一种:全量备份+差异备份
周六 | 周天 | 周一 | 周二 | 周三 | 周四 | 周五 |
---|---|---|---|---|---|---|
差异 | 全备 | 差异 | 差异 | 差异 | 差异 | 差异 |
配置文件
[pg1-data]
pg1-path=/var/lib/postgresql/11/main
[global]
archive-async=y
process-max=2
start-fast=y
repo1-path=/var/lib/postgresql/11/pgbackrest
repo1-retention-full=2
repo1-retention-diff=7
[global:archive-push]
process-max=2
compress-level=3
[global:archive-get]
process-max=2
定时器
30 06 * * 0 pgbackrest --type=full --stanza=demo backup
30 06 * * 1-6 pgbackrest --type=diff --stanza=demo backup
第二种:全量备份+增量备份
周六 | 周天 | 周一 | 周二 | 周三 | 周四 | 周五 |
---|---|---|---|---|---|---|
增量 | 全备 | 增量 | 增量 | 增量 | 增量 | 增量 |
[pg1-data]
pg1-path=/var/lib/postgresql/11/main
[global]
archive-async=y
process-max=2
start-fast=y
repo1-path=/var/lib/postgresql/11/pgbackrest
repo1-retention-full=2
repo1-retention-diff=7
[global:archive-push]
process-max=2
compress-level=3
[global:archive-get]
process-max=2
定时器
30 06 * * 0 pgbackrest --type=full --stanza=demo backup
30 06 * * 1-6 pgbackrest --type=incr --stanza=demo backup