Bri*_* D. 4 postgresql amazon-ec2 amazon-web-services
我正在尝试确定在 Amazon EC2 上备份 PostgreSQL 数据库的最佳方法。我已经阅读了几个选项。
1) 为您的数据库正在使用的 EBS 卷拍摄每日快照。
我看到这种方法的问题是在写入过程中拍摄快照时会发生什么?我的数据不会被破坏吗?
2) 使用 pg_dump,压缩文件并存储在 S3 中。
pg_dump 不会创建损坏的数据,但是从 pg_dump 恢复数据库可能很耗时
应该使用什么策略?选项 1 似乎很诱人,因为它更容易执行和恢复,但我使用这种方法是否冒险?
我不能说 PostgreSQL,因为我不使用它,但我使用了您的选项 1 的变体来备份 EC2 上的 MySQL 数据库,并且已成功恢复它们,没有问题。
当然,第一个要求是您的数据库存储在 EBS 卷上,以便可以对它们进行快照。我喜欢使用 XFS 作为文件系统,因为整个文件系统很容易被冻结。
要开始快照过程,您需要冻结数据库并刷新表。有一个很棒的脚本可以做到这一点,并冻结你的文件系统(如果是 xfs),称为ec2-consistent-snapshot(该站点确实有一些关于 PostgreSQL 的评论,可能指向你可接受的方向——它是为 Ubuntu 设计的,但是,适用于其他发行版(例如 Amazon 的 Linux/CentOS)没有太大问题)。我的理解是,使用 PostgreSQL,人们通常只是简单地拍摄快照(在冻结文件系统之后)并依靠 PostgreSQL 的内置恢复功能将所有内容恢复到正常运行状态。但是,xfs_freeze 对于获得一致的快照仍然很重要。
一旦您的文件系统被冻结(如果可能,您的数据库被刷新和锁定),请获取您的快照(理想情况下,直接使用 API,而不是(非常)缓慢的基于 Java 的命令)。快照命令只需要(几)秒返回,之后您可以解冻文件系统 - 创建的快照将保持一致,尽管有额外的读取。
鉴于快照是差异化的(在某种程度上)和压缩的,这种方法比使用 S3 经济得多,并且提供了更多的选择,它还允许您更快地恢复数据,并且应该将您的数据库锁定更短的时间而不是生成转储。也可以旋转你的快照来控制它们的数量——我写了一个perl 脚本来为我做这件事。
如果有疑问,请尝试第一个选项,然后创建一个 EBS 卷并测试数据库以查看一切正常 - 不要只相信备份是好的。
| 归档时间: |
|
| 查看次数: |
1622 次 |
| 最近记录: |