在前往我的 EC2 实例上创建备份策略之前,我正在阅读 postgresql 文档的备份部分。
所以有两种方法可以做到这一点。
- 使用创建转储
pg_dump
。 WAL
启用归档的文件级备份。我将使用快照,所以我的用例属于这一类。
现在的问题是我是否需要在进行备份之前冻结我的文件系统?Postgresql 文档建议 WAL 恢复不会受到不一致快照的影响。为了安全起见冻结有意义吗?
我应该通过以上两种方式进行备份吗?
在什么样的时间段之后我应该删除旧的 WAL 日志?
文档还提到 WAL 日志和数据应该在同一个文件系统上以使备份一致。在那种情况下,我正在考虑将 WAL 日志与 EBS 快照分开备份,并将其保存在 S3 和亚马逊以外的一些外部位置。对这个策略的想法?
如果我遗漏了什么,请提及。
EBS 快照是原子的,它们是一个时间点。这意味着对于 PostgreSQL,只要包括 WAL 在内的所有数据目录和所有表空间都在同一个 EBS volume中,从快照开始就等同于在不正常关机(崩溃)后开始,而 PostgreSQL 旨在每次都可靠地执行此操作.
如果所有内容都在同一 EBS 卷中,则无需停止对该卷的 I/O 即可拍摄 EBS 快照。
pg_start_backup
如果您正在使用和pg_stop_backup
以及文件级副本,您也不需要停止 I/O ,但您必须捕获所有 WAL 文件,直到pg_stop_backup
. 请参阅手册。至于S3存储等,请查看barman;它可以为您自动执行大部分操作,并支持可用于将备份放入 S3 的挂钩脚本。