Postgresql AmazonEC2上的数据存储建议,尤其是数据库

Postgresql AmazonEC2上的数据存储建议,尤其是数据库,postgresql,amazon-web-services,amazon-ec2,amazon-ebs,lvm,Postgresql,Amazon Web Services,Amazon Ec2,Amazon Ebs,Lvm,我已经玩了一年多的亚马逊网络服务,但我不太明白它是如何工作的。例如,当我从EC2控制台选择一个AMI并继续执行向导时,我会进入“存储配置选项卡”。这里有几个选项 有根卷选项卡,然后是EBS卷选项卡。这两者有何不同?我能为每个人分配的最大尺寸是多少?如何配置EBS卷以使用我的实例?例如,我决定创建8个EBS卷,每个卷的存储容量为25 GB……现在,对于自然存在于根设备上的Postgresql数据库,我如何配置它,使数据库存储在所有8个EBS卷上?从某种意义上说,8个EBS卷将成为一个200 GB的

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

有根卷选项卡,然后是EBS卷选项卡。这两者有何不同?我能为每个人分配的最大尺寸是多少?如何配置EBS卷以使用我的实例?例如,我决定创建8个EBS卷,每个卷的存储容量为25 GB……现在,对于自然存在于根设备上的Postgresql数据库,我如何配置它,使数据库存储在所有8个EBS卷上?从某种意义上说,8个EBS卷将成为一个200 GB的驱动器,而postgres数据库数据将存储在整个驱动器中

任何形式的澄清都将不胜感激。

您应该阅读。我也写了一些关于PostgreSQL的文章。另请参见相关侧栏中列出的问题和其他问题

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

另一方面,EBS更可能受到停机和故障的影响,这些故障使其在一段时间内不可用;您的数据可能仍然存在,但如果您在几个小时内无法获取数据,则在故障修复之前,您无法进行故障转移。因此,无论如何,您确实需要良好的备份和复制

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

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

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

  • 实例存储卷的最大大小由实例类型定义。请参阅实例的文档。EBS卷的最大大小在以下内容的第一段中:

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

  • PostgreSQL数据库实际上并不“自然存在于根卷上”。它住在你放的地方。如果您使用的是package manager安装的版本,它通常会放在
    /var/lib/pgsql
    /var/lib/postgres
    中,但您可以更改启动脚本选项将其移动到其他位置,将其替换为符号链接到所需位置,或在该位置装载新卷。关于如何在堆栈溢出、dba.stackexchange.com和serverfault上移动PostgreSQL,有大量的讨论,所以我在这里不再重复

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

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

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

简短的回答是:

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

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

tl;博士


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

我认为这是非常危险的建议,尤其是您的tl;dr.“使用PostgreSQL卷的实例存储,除非您需要在服务器之间传输卷[或者您关心您的数据,并且不知道如何跨多个AZ或区域构建强健的PostgreSQL复制设置]”。您正在与一个新用户打交道,您确实需要清楚明确地了解在没有正确理解实例存储并设置适当冗余的情况下使用实例存储所涉及的严重数据丢失风险。是的,Craig,有道理。我刚刚思考了一个想法,即初学者将花费大量时间使用EBS复制构建一个脆弱的解决方案,该解决方案将中断并占用大量维护时间,最终将被其他解决方案取代。实例商店也比较便宜,所以初学者自己不用EBS可以省一块钱。谢谢你的建议,非常感谢!很抱歉,此操作已关闭,我希望它已迁移到ServerFault或dba.stackexchange.com。