PostgreSQL增量备份的最佳方法

时间:2011-04-03 12:36:02

标签: postgresql backup

我目前正在使用pg_dump用{pi} gzip管道传输到split。但问题是所有输出文件总是被更改。因此,基于校验和的备份始终会复制所有数据。

是否有其他好方法可以对PostgreSQL数据库进行增量备份,从而可以从备份数据中恢复完整数据库?

例如,如果pg_dump可以使所有内容完全排序,那么所有更改仅在转储结束时应用,或者类似。

3 个答案:

答案 0 :(得分:54)

更新 Check out Barman,以便更轻松地设置WAL存档进行备份。

您可以使用PostgreSQL's continuous WAL archiving方法。首先,您需要设置wal_level=archive,然后执行完整的文件系统级备份(在发出pg_start_backup()pg_stop_backup()命令之间),然后通过配置{{1}来复制更新的WAL文件选项。

优点:

  • 增量,WAL档案包括恢复数据库当前状态所需的一切
  • 几乎没有开销,复制WAL文件很便宜
  • 您可以在任何时间点恢复数据库(此功能称为PITR或时间点恢复)

缺点:

  • 设置比pg_dump
  • 更复杂
  • 完整备份将比pg_dump大得多,因为包含了所有内部表结构和索引
  • 对于写入量大的数据库不起作用,因为恢复需要很长时间。

有些工具(例如pitrtoolsomnipitr)可以简化设置和恢复这些配置。但我自己没有用过它们。

答案 1 :(得分:7)

另请查看http://www.pgbackrest.org

pgBackrest是PostgreSQL的另一个备份工具,您应该在它支持时进行评估:

  • 并行备份(测试几乎线性扩展到32个核心,但可能更远......)
  • 压缩静态备份
  • 增量和差异(压缩!)备份
  • 流式压缩(数据仅在源处压缩一次,然后通过网络传输并存储)
  • 并行,增量恢复(将旧版本更新为最新版本的能力)
  • 完全支持表空间
  • 备份轮换和存档过期
  • 能够恢复由于某种原因失败的备份
  • 等等。

答案 2 :(得分:1)

另一种方法是备份到纯文本并使用rdiff创建增量差异。