使用具有弹性豆茎的数据库 [英] Using databases with elastic beanstalk

查看:13
本文介绍了使用具有弹性豆茎的数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在尝试在AWS上部署基于Django的调查问卷应用程序。就这一点而言,我对AWS和Web应用程序完全陌生。
当我构建应用程序时,它在本地服务器上运行良好,我在settings.py:

中使用了以下代码
DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

我已经成功地使用弹性豆茎部署了我的应用程序,并且运行良好。但随后我不得不对代码进行一些更改,我使用本地目录中的"EB Deploy"来部署新版本。
这会导致所有数据丢失(到目前为止已填写的响应)。我意识到我需要对我的数据库做点什么。由于我对这一切完全陌生,希望能得到一些帮助和指导。

推荐答案

伙计,我过去有过这样的经历,没有好消息给你。最糟糕的是没人告诉我我现在要告诉你什么。这意味着我花了很长时间才弄明白正在发生的事情……

想想看:当您创建弹性豆茎环境时,AWS会为您提供一切:实例、EB卷、负载均衡器等等。当您使用Console或AWS CLI上传修订版本时,AWS会根据弹性豆茎映像从头开始重新创建实例。这意味着保存在环境磁盘上的所有数据都将被丢弃。新环境将使用"空"磁盘进行初始化(因此和平台文件将在那里)。这意味着:根据您在数据库上保存的内容,您的数据库将位于天堂或地狱。

如果您在实例销毁/重新初始化后需要保留您的数据,则必须配置额外的挡路弹性存储或弹性文件系统。但要实现这一点,您必须更改初始化脚本,以便在初始化后附加挡路存储或文件系统。请记住,弹性豆茎在终止/重新初始化实例时有点粗暴。如果您的数据库需要一些过程才能正确关闭,EB会让它哭(根据个人经验进行评论)。

在这种情况下,最佳实践是将数据库安装在不同的实例中,并使其独立于应用程序环境运行。在这种情况下,您可以在部署新修订版本时忘记数据库。

有关详细信息,请查看here

这篇关于使用具有弹性豆茎的数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆