使用 CloudFormation 时如何将 Aurora serverless MySQL 集群从 5.6 升级到 5.7

How to upgrade Aurora serverless MySQL cluster from 5.6 to 5.7 when using CloudFormation

我有 Aurora serverless MySQL 集群 运行 引擎版本 5.6。它是使用 CloudFormation 设置的。

升级集群以支持 MySQL 5.7 的最佳方法是什么?

我尝试将 EngineVersion 从 5.6 更改为 5.7,将引擎从 aurora 更改为 aurora-mysql,并为 5.7 指定了新的参数组。

使用这些更改更新堆栈returns 一个错误:

In-place upgrade of the engine to a new major version isn't supported on serverless engine mode. (Service: AmazonRDS; Status Code: 400; Error Code: InvalidDBClusterStateFault;

我不相信这个错误,因为这不应该是主要版本,我能找到的文档支持这应该是可能的想法。

以下是 CloudFormation 代码片段,不包括不相关的属性:

  RDSDBClusterParameterGroup:
    Type: 'AWS::RDS::DBClusterParameterGroup'
    Properties:
      Description: Aurora Cluster Parameter Group for aurora-mysql5.7
      Family: aurora-mysql5.7
      Parameters:
        general_log: '0'
  RDSCluster:
    Type: 'AWS::RDS::DBCluster'
    DependsOn: 
      - RDSDBClusterParameterGroup
    Properties:   
      DBClusterParameterGroupName: 
        Ref: RDSDBClusterParameterGroup
      Engine: aurora-mysql
      EngineMode: serverless
      EngineVersion: 5.7
      [..]

我无法执行升级。它算作一个主要版本,因为我们正在从 Aurora serverless V1 升级到 V2。

因为我必须使用 CFN,所以找到最佳解决方案有点复杂。

这样解决的:

  1. 使用控制台从现有 5.6 集群创建的快照
  2. 已将快照恢复到支持 5.7 的新集群 (Aurora serverless v2)
  3. 在现有 CFN 堆栈中导入了新的集群资源
  4. 更新了我的管道中的模板并再次 运行 部署(没有更改,因为它已经导入)
  5. 已验证新集群中的一切正常并且所有数据都存在。
  6. 从模板和堆栈中删除了旧的 v1 (5.6) 集群。