Mic*_*ton 7 postgresql amazon-web-services amazon-rds
我正在尝试在弹性beanstalk上创建一个简单的postgres RDS支持的CRUD Web应用程序的暂存版本.此暂存版本的目的是在将这些更改重新部署到生产环境之前,在实施新代码更改时运行集成测试.
我当前遇到的问题是重置临时堆栈.我想在集成测试开始时使用空白数据库实例.然而,重新部署新的RDS实例需要几分钟,这意味着集成测试需要很长时间(> 20分钟)才能运行.
因为它是在弹性beanstalk上它是在VPC中,因此用SQL命令重置数据库,似乎CI服务器必须用ssh隧道做一些棘手的事情,这对于那个简单的(至少对我而言)也是如此.
是否有快速方法将正在运行的RDS实例重置为空白状态以进行测试?
我认为您想要的是拥有空白数据库(相对于空白RDS实例),这里有几种选择可以做到这一点:
1)最好的选择IMO,但是可能需要一些编码-Postgresql支持保存点,因此您可以对测试进行结构化,使其始终保持数据库干净(对于本地测试也很有用)。这个想法是在开始测试之前创建一个保存点,并在最后回滚到该保存点。这样,测试所做的所有更改都将被删除。
2)测试开始时,您可以运行SQL命令来删除/创建数据库。您的测试可以连接到数据库,因此您可以从代码中执行此操作,而无需通过ssh进行此操作。如果数据量较小,则可以为每次测试运行创建一个新的数据库。您可以将其命名为“ mydb20160115101112”(带有当前日期和时间)。
3)实际上也可以从CI配置中删除/创建数据库(也没有ssh或其他复杂的东西),您登台实例已经可以访问RDS,因此您可以使用来运行一些SQL命令psql,如下所示:
psql -c "drop database mydb20160115101112;" --dbname=template1
要以这种方式使用psql(无需输入用户名/密码),您需要创建一个与系统用户同名的postgresql用户(确保为CI使用的系统用户创建一个postgresql)。
| 归档时间: |
|
| 查看次数: |
5103 次 |
| 最近记录: |