2012-07-23 92 views
5

我在amazon EC2上有一个postgresql数据库,需要确定备份这些数据的最佳方法。我正在考虑两个选项:Amazon EC2 postgresql备份:将数据目录或pg_dump快照到一致快照的EBS卷上?

(1)将EBS卷挂载到某个目录(如/ pgsqldata),并将此目录用作postgresql数据目录(在Amazon Linux上,缺省值为/ var/lib/pgsql/data /)。然后,这个卷将获得频繁的快照。

(2)保持PostgreSQL的数据目录在它的默认位置。然后使用pg_dump频繁地将备份转储到/ pgsqldumps之类的位置,并且该卷在每个pg_dump后都会获得快照。

第三种方法是简单地快照根设备卷(我使用的是EBS支持的实例),因为它既是一个web服务器,也是我的情况下的数据库。我喜欢有一个专门的数据备份卷的想法。

最后,如果我正在对活动postgresql数据目录进行直接快照,是否需要担心在快照过程中可能对数据库所做的更改?

感谢

+0

另请参阅http://www.postgresql.org/docs/9.1/interactive/continuous-archiving.html(如果您还没有) – derobert 2012-07-23 20:50:50

回答

4

你应该反正体积移动到自己的EBS卷,这有助于在EBS卷写争以及其他好处。另外,我还将日志写入自己的卷中,并将其保存起来。

为了回答这个问题,我做了两个。让EBS卷快照并进行数据库转储。这样,如果您想将实时数据同步到开发盒(取决于数据库上的PII),则转储和恢复很容易,但您也可以轻松恢复新实例并附加快照。如果您的数据库转储小于5GB,您可以将其同步到S3并忘记将备份存储在自己的卷上,但如果不是,则需要将其存储在自己的EBS卷上,然后将其存储在常规基础。

Here是我写的这样做的脚本,它可能已经过时了,但应该可以工作。