我在两个不同的服务器上设置了 pgBackRest 和 PostgreSQL 配置。
我使用 crontab 设置每周一次完整备份和每天一次差异备份。
0 1 * * 0 pgbackrest --type=full --stanza=stanzaname backup
0 1 * * 1-6 pgbackrest --type=diff --stanza=stanzaname backup
我如下设置保留以节省磁盘使用量:
repo1-retention-full=2
repo1-retention-diff=1
repo1-retention-archive-type=full
使用此保留配置是否可以确保 PITR 最多涵盖 2 周?
如果是,将差异保留设置为大于 1 是否有好处?
因为保留更多的差异备份可能会占用大量磁盘空间。
也许取决于您的存档 (WAL) 保留策略。
每晚差异:仅依靠您的每晚差异,您的 PITR 恢复窗口最多只能达到上周日的完整备份。从他们的文档中,“差异备份:pgBackRest 仅复制自上次完整备份以来发生更改的那些数据库集群文件”。
假设今天是 9 月 19 日星期四,您想要恢复到上周的星期二(10 号)。您不能使用唯一的差异,即今晚(19 日)凌晨 1 点拍摄的差异,它仅包含自 15 日星期日上次完整备份以来的更改。如果您还原最旧的完整备份,即 8 日星期日制作的备份,则您没有从 9 日星期一到 14 日星期六制作的差异应用到它。
WAL 存档:那么,如果您在恢复 9 月 8 日星期日的完整备份后应用它们,那么您可以使用存档的 WAL 文件吗?也许 - 这是我认为文档有点不清楚的部分:“pgBackRest 在备份过期时自动删除存档的 WAL 段(基于 repo1-retention-full 选项的完整备份的默认 WAL 过期)”。
我不确定他们是否意味着上周的 WALS 是否保留;听起来可能是的,因为最旧的完整版本还没有过期……但是括号中的声明让我有些犹豫。
不管 #2,我的建议是找到一个不仅仅依赖于 WAL 存档保留的解决方案。你可以为每晚的差异配置更高的保留,这样你就不需要仅仅依赖 WAL 存档(理想但磁盘使用量很大),或者每 2 周只做一次完整备份(我自己不喜欢这个选项,因为我更喜欢每周一次的安心)
或者你可以做我们所做的,每晚增量:“增量备份不能独立过期——它们总是与相关的完整或差异备份一起过期。”
为了实现相同的 14 天 PITR 窗口,我们正在执行以下操作:
我们发现上面的内容对我们来说是一个很好的平衡:每晚的增量相对较小并且比差异更快,特别是当我们离周六满时越来越远时。
来源:https : //pgbackrest.org/user-guide.html(2019-09-19访问)