部署期间的 AWS Aurora 迁移
AWS Aurora migration during deployment
我想朝着应用程序的无停机持续部署迈出一步。
我在连接到 aurora 数据库的 EC2 实例上有一个应用 运行ning。在部署期间,我需要 运行 数据库迁移脚本并在 EC2 上更新应用程序 运行ning。如何在不造成任何停机时间的情况下更新它们?我可能可以配置 Elastic Beanstalk/CodeDeploy 以这样一种方式更新 EC2 实例,在一段时间内我实际上将在 2 个单独的 EC2 实例上拥有我的应用程序 运行ning 的 2 个实例,但这仍然给了我只有一个数据库实例。如果我 运行 我的迁移脚本,这可能会暗杀我的应用程序实例之一,如果由于某种原因部署失败,我可能无法恢复对数据库所做的更改。
所以基本上问题是:在不造成任何停机的情况下应用 SQL 迁移脚本的正确方法是什么?
这取决于您的具体情况和数据库迁移类型。您可以遵循的一种方法,直接取自 AWS 文档:
- Clone your Aurora DB, using AWS provided API
- 将您的迁移脚本应用到新数据库
- Deploy your new source code version to a new Elastic Beanstalk environment
- 使用新数据库测试您的新源代码
- 使用 AWS 或您的 DNS 提供的 api 交换两个环境 CNAME,您可能希望在这样做之前将数据更改从旧数据库同步到新数据库
我想朝着应用程序的无停机持续部署迈出一步。 我在连接到 aurora 数据库的 EC2 实例上有一个应用 运行ning。在部署期间,我需要 运行 数据库迁移脚本并在 EC2 上更新应用程序 运行ning。如何在不造成任何停机时间的情况下更新它们?我可能可以配置 Elastic Beanstalk/CodeDeploy 以这样一种方式更新 EC2 实例,在一段时间内我实际上将在 2 个单独的 EC2 实例上拥有我的应用程序 运行ning 的 2 个实例,但这仍然给了我只有一个数据库实例。如果我 运行 我的迁移脚本,这可能会暗杀我的应用程序实例之一,如果由于某种原因部署失败,我可能无法恢复对数据库所做的更改。
所以基本上问题是:在不造成任何停机的情况下应用 SQL 迁移脚本的正确方法是什么?
这取决于您的具体情况和数据库迁移类型。您可以遵循的一种方法,直接取自 AWS 文档:
- Clone your Aurora DB, using AWS provided API
- 将您的迁移脚本应用到新数据库
- Deploy your new source code version to a new Elastic Beanstalk environment
- 使用新数据库测试您的新源代码
- 使用 AWS 或您的 DNS 提供的 api 交换两个环境 CNAME,您可能希望在这样做之前将数据更改从旧数据库同步到新数据库