PostgreSQL增量备份的最佳方法
我目前正在使用通过管道连接到 gzip
的 pg_dump,通过管道连接到 split
。但这样做的问题是所有输出文件总是会改变。因此基于校验和的备份始终复制所有数据。
还有其他好方法来执行 PostgreSQL 数据库的增量备份,可以从备份数据恢复完整数据库吗?
例如,如果 pg_dump 可以使所有内容绝对有序,那么所有更改仅在转储结束时应用,或类似的。
I am currently using pg_dump
piped to gzip
piped to split
. But the problem with this is that all output files are always changed. So checksum-based backup always copies all data.
Are there any other good ways to perform an incremental backup of a PostgreSQL database, where a full database can be restored from the backup data?
For instance, if pg_dump
could make everything absolutely ordered, so all changes are applied only at the end of the dump, or similar.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
更新: 查看 Barman 了解更简单的方法来设置 WAL 归档以进行备份。
您可以使用PostgreSQL的连续WAL归档方法。首先,您需要设置 wal_level=archive,然后执行完整的文件系统级备份(在发出 pg_start_backup() 和 pg_stop_backup() 命令之间)然后只需通过配置
archive_command
选项复制较新的 WAL 文件。优点:
缺点:
有一些工具,例如 pitrtools 和 omnipitr 可以简化设置和恢复这些配置。但我自己没有使用过它们。
Update: Check out Barman for an easier way to set up WAL archiving for backup.
You can use PostgreSQL's continuous WAL archiving method. First you need to set
wal_level=archive
, then do a full filesystem-level backup (between issuingpg_start_backup()
andpg_stop_backup()
commands) and then just copy over newer WAL files by configuring thearchive_command
option.Advantages:
Disadvantages:
There are some tools such as pitrtools and omnipitr that can simplify setting up and restoring these configurations. But I haven't used them myself.
另请查看 http://www.pgbackrest.org
pgBackrest 是 PostgreSQL 的另一个备份工具,您应该将其评估为它支持:
Also check out http://www.pgbackrest.org
pgBackrest is another backup tool for PostgreSQL which you should be evaluating as it supports:
另一种方法是备份为纯文本并使用 rdiff 创建增量差异。
Another method is to backup to plain text and use rdiff to create incremental diffs.