我是PostgreSQL的新手,我正在寻找备份数据库。我知道有3种方法pg_dump
,快照和复制以及使用WAL。您建议哪一个完整备份数据库?如果可能,请提供代码段。
答案 0 :(得分:6)
这在很大程度上取决于您的操作要求。
这三个都需要炮轰外部程序。 libpq
不直接提供这些设施;您需要通过pg_basebackup
或类似方式调用pg_dump
或execv
。
这三者都有不同的优势。
如果文件系统支持基于原子快照的备份很有用,但如果您使用表空间则无用,因为您需要多卷原子快照 - 这是大多数系统不支持的。它们也可能是一种痛苦。
pg_dump
很简单,可以生成紧凑的备份,但需要运行更多的服务器资源,不支持任何类型的时间点恢复或增量备份。
pg_basebackup
+ WAL归档和PITR非常有用,服务器上的资源成本相当低,但设置和管理起来比较复杂。正确的备份测试势在必行。
我强烈建议允许用户控制使用的备份方法。从pg_dump
开始,因为您可以将其作为简单的命令行调用并管理单个文件。使用-Fc
模式和pg_restore
可以根据需要进行恢复。然后,一旦你掌握了基础知识,就可以探索配置服务器以进行WAL归档和PITR。