将AWS RDS实例重置为初始状态的最快方法?

时间:2016-01-15 19:14:45

标签: postgresql amazon-web-services amazon-rds

我正在尝试在弹性beanstalk上创建一个简单的postgres RDS支持的CRUD Web应用程序的暂存版本。此临时版本的目的是在将这些更改重新部署到生产环境之前,在实施新代码更改时运行集成测试。

我目前遇到的问题是重置暂存堆栈。我想在集成测试开始时使用空白数据库实例。然而,重新部署新的RDS实例需要几分钟,这意味着集成测试需要很长时间(> 20分钟)才能运行。

由于它在弹性beanstalk中它在VPC中,因此用SQL命令重置数据库,似乎CI服务器必须做一些棘手的东西与ssh隧道没有' t(至少对我而言)那么简单。

是否有快速方法将正在运行的RDS实例重置为空白状态以进行测试?

2 个答案:

答案 0 :(得分:4)

我认为你想要的是拥有空白数据库(与空白RDS实例相比),这里有几个选项可以做到这一点:

1)最佳选择IMO,但可能需要一些编码 - postgresql支持保存点,因此您可以构建测试,它们将始终保持数据库清洁(对本地测试也很有用)。我们的想法是在开始测试之前创建一个保存点,并在最后回滚到该保存点。这样,测试所做的所有更改都将被删除。

2)当测试开始时,您可以运行SQL命令来删除/创建数据库。您的测试可以连接到数据库,因此您可以从代码中执行此操作,不需要通过ssh执行此操作。如果数据量很小,您可以为每个测试运行创建一个新数据库。您可以将其命名为“mydb20160115101112”(包含当前日期和时间)。

3)实际上也可以从CI配置中删除/创建数据库(也没有ssh或其他复杂的东西),您的登台实例已经可以访问RDS,因此您可以使用{{1运行一些SQL命令这样的事情:

psql

要以这种方式使用psql(无需输入用户名/密码),您需要创建一个与系统用户同名的postgresql用户(确保为CI使用的系统用户创建postgresql)。 / p>

答案 1 :(得分:0)

如果您在Elastic Beanstalk的帮助下创建RDS实例,请考虑我的解决方案。这不适用于外部创建和连接的RDS。

对于我的用例,我通过控制台简单地重建EB环境,找到了一个非常简单的解决方案。这会自动创建具有相同设置的新RDS数据库实例,但不会应用任何快照,因此新数据库为空。在使用Django应用新的迁移时,这非常有用。

希望这有用,更多信息请点击此处:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environment-management-rebuild.html

相关问题