如何使用 Elasticbeanstalk 在亚马逊 RDS 中删除表并重新创建?
Posted
技术标签:
【中文标题】如何使用 Elasticbeanstalk 在亚马逊 RDS 中删除表并重新创建?【英文标题】:How to drop table and recreate in amazon RDS with Elasticbeanstalk? 【发布时间】:2016-08-17 15:21:20 【问题描述】:我在 Amazon 上的数据库目前只有少量数据(我正在制作一个 Web 应用程序,但它仍在开发中),我希望将其删除,更改架构,然后重新恢复。过去几次我这样做了,我完全重新创建了我的 elasticbeanstalk 应用程序,但似乎有更好的方法。在我的本地机器上,我将采取以下步骤:
-
“dropdb 数据库名”,然后是“createdb 数据库名”
python manage.py makemigrations
python manage.py 迁移
我可以在亚马逊上做这样的事情来删除我的数据库并将其重新上线而不删除整个应用程序吗?当我前段时间尝试删除 RDS 实例并创建一个新实例时,我遇到了 elasticbeanstalk 问题。
【问题讨论】:
【参考方案1】:完成此操作的最简单方法是通过 SSH 连接到您的一个 EC2 实例,该实例可以访问 RDS 数据库,然后从那里连接到数据库。确保您的 python 脚本可以读取您的应用程序配置以访问配置的数据库,或为数据库主机名添加参数。要删除并创建您的数据库,您只需添加必要的参数即可连接到数据库。例如:
$ createdb -h <RDS endpoint> -U <user> -W ebdb
您还可以在 DB 为空时创建 RDS 快照,并使用 RDS 实例操作恢复到时间点或迁移最新快照。
【讨论】:
感谢您的评论,它帮助我走上了正确的道路。我能够删除并创建数据库,但现在运行 manage.py 时遇到问题。当我尝试在我的 EC2 实例中运行 manage.py 时,它找不到我的环境变量 - 关于为什么会这样的任何想法?我检查了 /opt/python/current/env 并且可以看到变量,但是当我进入 python shell 并运行“os.environ”时,它们没有被列出。 将为您的应用程序加载环境变量,但不会在您通过 SSH 连接到您的实例时加载。尝试运行source /opt/python/run/venv/bin/activate && source /opt/python/current/env
,或者至少运行后者来加载您的环境变量。
感谢您的评论 quezacoatl 不知道 /opt/python/current/env以上是关于如何使用 Elasticbeanstalk 在亚马逊 RDS 中删除表并重新创建?的主要内容,如果未能解决你的问题,请参考以下文章
亚马逊 AWS ElasticBeanstalk 自定义 AMI
如何在保留亚马逊 RDS 数据库的同时删除 Elastic Beanstalk 应用程序?
如何在亚马逊 Elastic Beanstalk 中安装和启用服务?