我是PostgreSQL的新手,我想备份数据库。我知道有3种方法pg_dump
,快照和复制和使用WAL。对于数据库的完整备份,您建议使用哪种方法?如果可能,提供代码片段。
发布于 2013-06-03 20:34:41
这在很大程度上取决于您的操作需求。
所有这三个都需要向外部程序提供支持。libpq
不直接提供这些功能;您需要通过execv
或类似的方式调用pg_basebackup
或pg_dump
。
这三个都有不同的优势。
如果文件系统支持基于原子快照的备份,那么基于原子快照的备份很有用,但是如果您正在使用表空间,则基于原子快照的备份将变得无用,因为您需要多卷原子快照-这是大多数系统不支持的。设置它们也是一件痛苦的事情。
pg_dump
很简单,可以生成紧凑的备份,但需要更多的服务器资源才能运行,并且不支持任何类型的时间点恢复或增量备份。
pg_basebackup
+ WAL归档和PITR非常有用,并且在服务器上的资源成本相当低,但设置和管理起来更复杂。正确的备份测试是必不可少的。
我强烈建议允许用户控制所使用的备份方法。从pg_dump
开始,因为您只需将其作为简单的命令行调用并管理单个文件。使用-Fc
模式和pg_restore
将其恢复到需要的位置。一旦掌握了基础知识,就可以探索配置服务器以进行WAL存档和PITR之类的事情。
https://stackoverflow.com/questions/16894189
复制相似问题