【问题标题】:Advice for data storage on Amazon EC2 especially for databases [closed]关于 Amazon EC2 上的数据存储的建议,尤其是数据库 [关闭]
【发布时间】:2013-04-17 07:59:06
【问题描述】:

我已经使用亚马逊的网络服务一年多了,但是我不太明白它是如何工作的。例如,当我从 EC2 控制台选择我选择的 AMI 并继续执行向导时,我会到达“存储配置选项卡”。这里有几个选项。

有根卷选项卡,然后是 EBS 卷选项卡。这两者有何不同?我可以为每个分配的最大大小是多少?如何配置 EBS 卷以与我的实例一起使用?例如,我决定创建 8 个 EBS 卷,每个卷具有 25 GB 的存储空间......现在对于自然存在于根设备上的 Postgresql 数据库之类的东西,我如何配置它以便数据库存储在所有 8 个 EBS 卷中?从某种意义上说,8 个 EBS 卷变成了一个 200 GB 的驱动器,而 postgres 数据库数据存储在整个驱动器中。

我们将不胜感激。

【问题讨论】:

  • 抱歉,这已关闭,我希望它已被迁移到 ServerFault 或 dba.stackexchange.com。

标签: postgresql amazon-web-services amazon-ec2 amazon-ebs lvm


【解决方案1】:

您应该阅读benefits of EBS vs instance store。我还写了一点关于这个on my work blog recently 的PostgreSQL 角度。另请参阅 what root device to use for a new EC2 instance 和相关侧栏中列出的其他问题。

除非您仔细设置复制和定期备份,否则实例存储最终会吃掉您的数据。如果实例失败或终止,如果它位于实例存储中,您将无法取回数据。无论如何,您都需要良好的备份,这对于实例存储更为重要,并且您需要更加小心地设置近乎实时的复制。

另一方面,EBS 更容易受到中断和故障的影响,使其在一段时间内不可用;您的数据可能仍然存在,但如果您在几个小时内无法访问它,您将无法进行故障转移,直到故障得到修复。所以无论如何你真的需要好的备份和复制。

快速回答,我将把详细解释留在帖子中:

  • 根卷是 EBS 或实例存储,具体取决于 AMI 类型。

  • 在卷选项卡中,您可以添加其他卷。您可以在创建卷时选择这些是 EBS 还是实例存储卷,无论 AMI 类型如何。不同的实例大小对实例存储卷的数量和大小有不同的限制,但对 EBS 卷的限制都相同。

  • 实例存储卷的最大大小由实例类型定义。请参阅您的实例的文档。 EBS卷的最大大小在the EBS documentation的第一段:

    Amazon EBS 卷在特定的可用区中创建,大小可以从 1 GB 到 1 TB。

  • PostgreSQL 数据库并不是真的“自然地存在于根卷上”。它住在你放的地方。如果您使用的是安装包管理器的版本,它通常会放在/var/lib/pgsql/var/lib/postgres,但您可以更改启动脚本选项以将其移动到其他位置,将其替换为指向所需位置的符号链接,或在那时安装一个新卷。关于如何在 Stack Overflow、dba.stackexchange.com 和 serverfault 上移动 PostgreSQL 有很多讨论,所以我不会在这里重复所有这些。

  • 要组合多个 EBS 卷,请使用 Linux 的软件 RAID (md)。就 Linux 而言,EBS 就像任何其他磁盘一样,因此请参阅设置 Linux 软件 RAID 的常用文档。

就我个人而言,我对 EC2 的性能非常不满意,至少对 PostgreSQL 来说是这样。你可以让一个非常快的数据库运行,但代价是非常惨重。如果您想为短期工作启动一些大型数据库,这非常方便,但作为长期托管选项并不经济,您最好寻找提供更好 I/O 性能的 VPS 提供商。搜索ServerFault、dba.stackexchange.com等

最后,提醒一下:高 I/O 实例上的实例存储似乎比其他选项更快……但如果您必须关闭或重新启动实例或实例失败,您将丢失实例上的所有数据存储卷,因此如果您要使用实例存储,必须拥有良好的备份和实时复制。

【讨论】:

  • 感谢您的建议,非常感谢!
【解决方案2】:

简短的回答是:

为了快速和肮脏,您可以只在所有 EC2 实例上存储实例,然后备份到 S3。 EBS 相对于实例存储的优势在于,当您终止该服务器时,EBS 将保留并可以重复使用,而实例存储则不会。

200Gb 空间很小,你可以为它获取一个存储设备(实例存储),然后备份到 S3 或复制整个 200Gb 的东西。您可能不会使用 RAID 或 haddrive 复制来提高数据库的可靠性/可用性。

tl;博士

除非您需要在服务器之间传输卷,否则请使用实例存储。

【讨论】:

  • 我认为这是非常危险的建议,尤其是您的 tl;dr. “为 PostgreSQL 卷使用实例存储,除非您需要在服务器之间传输卷 [或者您关心您的数据并且不确定如何跨多个 AZ 或区域构建强大的 PostgreSQL 复制设置]”。您正在与一个新用户打交道,您确实需要清楚明确地了解使用实例存储所涉及的严重数据丢失风险,而无需正确理解它并设置适当的冗余。
  • 是的,克雷格,有效点。我刚刚反思了一个想法,一个初学者会花费大量时间来构建一个带有 EBS 复制的脆弱解决方案,这将破坏并占用大量维护时间,并最终被其他解决方案所取代。实例商店也更便宜,所以初学者不使用 EBS 也可以省钱。
猜你喜欢
  • 2020-12-11
  • 2010-11-27
  • 2013-11-20
  • 2016-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多