我目前使用pg_dump管道来gzip管道分裂。但问题是所有的输出文件总是改变。因此,基于校验和的备份始终会复制所有数据。
有没有其他好的方法来执行Postgresql数据库的增量备份,其中可以从备份数据恢复完整的数据库?
例如,如果pg_dump可以使一切都绝对排序,因此所有更改只在转储结束时应用或类似。
更新:
Check out Barman为更简单的方式设置WAL归档备份。
可以使用PostgreSQL’s continuous WAL archiving方法。首先,您需要设置wal_level = archive,然后做一个完整的文件系统级备份(在发出pg_start_backup()和pg_stop_backup()命令之间),然后通过配置archive_command选项复制新的WAL文件。
优点:
>增量,WAL归档包括恢复数据库的当前状态所需的一切
>几乎没有开销,复制WAL文件是便宜
>您可以在任何时间点恢复数据库(此功能称为PITR或时间点恢复)
缺点:
>设置比pg_dump更复杂
>完整备份将远远大于pg_dump,因为包括所有内部表结构和索引
>对于大量写入的数据库不适用,因为恢复需要很长时间。