如何对删除 Amazon Aurora 集群时收到的错误进行问题排查?

上次更新时间:2019 年 5 月 16 日

我想删除一个 Amazon Aurora 集群,但:

  • 我收到一条错误消息。
    – 或者 –
  • Amazon Aurora 控制台中的删除选项不可用(显示为灰色)。

我如何排查此问题并删除集群?

简短描述

您可以使用 Amazon Relational Database Service (Amazon RDS) 控制台或 AWS 命令行界面 (AWS CLI) 来删除 Aurora 集群。有关更多信息,请参阅删除数据库实例

要使用 AWS CLI 删除 Aurora 集群,您必须先删除集群中的所有实例。删除集群中的所有实例后,您可以使用 delete-db-cluster 删除集群。如果您使用 Amazon RDS 控制台删除集群中的最后一个实例,则也会自动删除空集群。

解决方法

删除集群之前,请考虑以下事项:

  • 如果您的集群只有一个实例且您使用 Amazon RDS 控制台删除该实例,则该实例和集群都将被删除。
  • 如果您的集群有一个写入器实例和一个或多个读取器实例/只读副本且您删除了读取器实例,则写入器实例和集群不受影响。但是,如果您删除了写入器实例,则读取器实例被提升为写入器。然后,读取器实例发生故障转移,从而可能会导致停机。

使用 RDS 控制台删除 RDS 集群

在 Amazon RDS 控制台中,遵循以下步骤:

  1. 打开 Amazon RDS 控制台
  2. 从导航窗格中选择数据库,然后选择集群。
  3. 选择操作,然后选择删除集群。 
    注意:如果删除集群变成灰色或不可用,您需要删除的集群中可能有一个实例。

如果您收到以下错误:“This database has deletion protection option enabled, to be able to delete the last Aurora DB instance, modify the Aurora cluster and disable deletion protection”,请按照以下步骤操作:

  1. 打开 Amazon RDS 控制台
  2. 从导航窗格中选择数据库,然后选择集群。
  3. 选择操作,然后选择修改集群
  4. 选择禁用删除保护,然后选择继续
  5. 选择立即应用

使用 AWS CLI 删除 RDS 集群

注意:以下步骤同时适用于 Aurora MySQL 和 Aurora PostgreSQL。

通过运行与以下内容类似的命令来删除 Aurora 集群:

aws rds delete-db-cluster --db-cluster-identifier sample-cluster --final-db-snapshot-identifier mydbinstancefinal

通过运行与以下内容类似的命令来删除只读副本实例:

aws rds delete-db-instance --db-instance-identifier mysql-aurora-replica --final-db-snapshot-identifier mydbinstancefinal2

如果您在尝试使用 AWS CLI 删除 Aurora 时收到一条错误消息,请检查以下各项:

InvalidDBClusterStateFault 错误

“An error occurred (InvalidDBClusterStateFault) when calling the DeleteDBCluster operation: Cluster cannot be deleted, it still contains DB instances in non-deleting state”

必须删除与集群关联的所有实例,然后才能删除该集群。通过运行类似于以下内容的命令来删除实例:

aws rds delete-db-instance --db-instance-identifier sample-instance --final-db-snapshot-identifier mydbinstancefinal

InvalidParameterCombination 错误

“An error occurred (InvalidParameterCombination) when calling the DeleteDBInstance operation: FinalDBSnapshotIdentifier cannot be specified when deleting a cluster instance”

此错误警告您,您在删除集群前尚未拍摄集群级快照。您可以通过运行类似于以下内容的命令来删除实例并跳过最后一个快照:

aws rds delete-db-instance --db-instance-identifier test-replica --skip-final-snapshot

注意:要保留自动备份,请添加 --no-delete-automated-backups。要删除自动备份,请使用 --delete-automated-backups

“无法删除只读副本数据库集群的最后一个实例”错误

“Cannot delete the last instance of the read replica DB cluster.Promote the DB cluster to a standalone DB cluster in order to delete it”

通过运行类似于以下内容的命令来提升只读副本集群

aws rds promote-read-replica-db-cluster --db-cluster-identifier rds-mysql-aurora-replica-cluster