GitLab CI中Terraform部署AWS RDS版本降级失败求助
解决GitLab CI中Terraform修改RDS实例版本失败的问题
问题根源
报错Cannot find upgrade path from 5.7.38 to 5.6的核心原因是:AWS RDS不支持MySQL从高版本降级到低版本,RDS仅提供官方的版本升级路径,没有反向降级通道。当前你的RDS实例实际版本为5.7.38,但Terraform配置中指定了engine_version = "5.6",导致Terraform尝试修改实例版本时触发AWS参数校验错误。
解决方案
根据你的需求选择对应方案:
方案1:确实需要使用MySQL 5.6版本
- 备份数据:先对现有
test-dms实例创建RDS快照,或用mysqldump导出全量数据,确保数据安全。 - 对齐Terraform状态:临时修改Terraform配置中的
engine_version为5.7.38,同时将option_group_name改为default:mysql-5-7,运行一次流水线让Terraform状态和实际实例对齐,避免后续销毁时出现冲突。 - 销毁旧实例:通过Terraform或AWS控制台销毁当前的
test-dms实例。 - 创建新实例:将Terraform配置改回
engine_version = "5.6"和option_group_name = "default:mysql-5-6",运行流水线创建新的MySQL 5.6实例。 - 恢复数据:将之前备份的数据恢复到新创建的5.6实例中。
方案2:不需要降级,修正配置错误
- 修改配置:将Terraform配置中的
engine_version改为5.7.38,同时更新option_group_name为default:mysql-5-7,让配置和现有实例的实际版本匹配。 - 重新运行流水线:修改后提交配置,重新触发GitLab CI流水线,Terraform会修正配置差异,不再尝试修改实例版本,作业即可正常执行。
注意事项
- 所有涉及实例销毁的操作必须先完成数据备份,避免数据丢失。
- 生产环境操作前,请先在测试环境验证流程。
- 你提到的ACM证书更新和当前报错无关,无需针对证书做额外调整。
内容的提问来源于stack exchange,提问作者sam23
相关产品推荐
相关产品推荐

