【问题标题】:Updating an Aurora serverless from MySQL 5.6 to 5.7 with CloudFormation without loss使用 CloudFormation 将 Aurora 无服务器从 MySQL 5.6 更新到 5.7 而不会丢失
【发布时间】:2020-08-04 22:38:34
【问题描述】:
上下文
我需要将生产 Aurora 无服务器数据库从 MySQL 5.6 升级到 5.7。
我的所有资源都使用 CloudFormation 部署为基础架构即代码。
问题
更新 CloudFormation 模板中的引擎版本会导致数据库替换,从而导致停机和数据丢失。
我也有很多依赖数据库 ARN 连接的依赖资源。 (ARN 当前导出为跨堆栈引用)。
问题
什么是实现这种维护的干净方式,从长远来看是可行的?
提前致谢!
【问题讨论】:
标签:
amazon-web-services
amazon-cloudformation
amazon-rds
aws-aurora-serverless
【解决方案1】:
如果您查看任何 CloudFormation 文档,每个参数都将标有 Update requires。这将确定您的资源是否有明确的替换或有条件的替换(或根本没有)。
对于 Aurora Serverless 集群,documentation 有许多参数会强制替换它。
您如何处理这取决于资源的重要性,请记住,即使从快照开始也会涉及潜在的停机时间,在此期间写入原始集群的任何数据也会丢失。
我个人建议考虑以下因素:
- 您的系统可以在没有此数据库的情况下运行一段时间吗?如果不是,那么您应该同时运行两个数据库。然后使用DMS 之类的服务进行同步。满意后执行切换。
- 您的应用程序可以在只读模式下运行吗?如果是这样,请停止对原始数据库的写入,然后拍摄快照。创建新数据库作为附加资源并从快照启动。
我建议尝试将其创建为附加资源,因为与大多数资源不同,如果数据库已被删除,丢失数据库可能不会那么容易回滚。一旦你有信心,然后删除以前的数据库。