我正在build立一个非常小的networking应用程序,我希望最终成长为更大的东西。 现在,这是一个接近零预算的个人项目,所以我没有太多的资源可以投入。 如果我开始看到一些成功的话,我希望能够以一种可以扩大规模的方式进行设置。
我打算在EC2上用一个使用PostgreSQL作为数据库的Rails应用程序来设置一个微型实例。 我是新来的EC2,并且对设置服务器的过程感到困惑。
我已经读了足够的知道,在Micro实例上运行PostgreSQL通常不被推荐,并且在同一个实例上运行Web服务器的效果更差,但是性能在这个时候没有任何实质性的担忧(我现在只有3个用户! )。 正常运行时间更重要,但并不重要。 数据库的完整性和可靠性至关重要。
从我所知道的情况来看,只要在EC2实例上设置默认的PostgreSQL安装就行了,但是如果实例被终止,数据就会消失。 我想知道的是
如何设置PostgreSQL将其数据存储在某个将保存的地方?
如何设置连续备份,以便总是有用户数据的另一个副本?
我意识到,这些问题都不是微不足道的,只是指向正确的方向将是一个巨大的帮助,因为这是一个很大的话题,让我的头。
在EBS上创build实例,对根卷禁用“delete on terminate”。 这会使你难以意外地破坏你的数据。 几天前我在这篇文章中写了一些关于EBS vs实例商店的文章 。 同一篇文章讨论了使EC2上的PostgreSQLperformance可接受的选项(提示:不要使用微型实例)。
现在,最重要的是,确保将常规pg_dump备份或pg_basebackup + WAL归档设置到Amazon云的某处。 为此检查酒保 。 如果你愿意信任AWS云,或者你不介意奇怪的中断,你可以归档到S3(最好是另一个AWS地区的S3)。
如果可能,还可以将stream式复制设置到另一个可用区域或区域中的第二台Pg服务器。
定期testing您的备份。 监控您的复制(可能使用repmgr工具来帮助自动化)。
主机的快照并不是一个坏主意,但如果logging如何configuration它并testing备份 ,则不应该是必须的。
最初,您可以为您的微型实例使用EBS支持的实例。 这应该照顾您在重新启动时丢失数据的最初担心。
之后,您应该设置实例来为数据(文档根和数据库文件)提供额外的EBS磁盘。 您可以使用EBS快照function拍摄数据磁盘的快照,并将其备份到s3。
这是对你应该做什么的一个非常高层次的描述。一个详细的答案真的很长。