在 creating/updating 个实例时禁用 AWS RDS 备份?

Disabling AWS RDS backups when creating/updating instances?

我正在从快照创建新的 RDS MySQL 实例,并通过 API 和 UI 更新它们的配置。无论我如何创建或更新实例,这些操作都会自动触发通过某种自动备份过程创建的新快照。有没有办法在执行这些操作时禁用快照创建,因为我不需要额外的快照并且它们的创建会导致不必要的延迟?

我与 AWS 支持人员进行了交谈,看起来没有办法阻止在实例创建时生成备份。这是由于 create/update 上的备份创建是如何触发的(它是自动备份过程的一部分)以及控制此功能的能力有限(打开和关闭它,但仅限于现有实例)。

这里有一些详细信息,以防其他人遇到与我相同的问题。

我对两种情况感兴趣:

  1. 不要在 RestoreDBInstanceFromDBSnapshot 请求上创建备份
  2. 不要在 ModifyDBInstance 请求上创建备份

备份由这个标志控制:

BackupRetentionPeriod = 0

不幸的是,此标志是实例和快照的一部分,但只能在实例上设置。因此,为了创建一个设置了这个标志的实例(因此没有生成备份),快照必须禁用这个标志。这只有在源实例禁用了此标志时才会发生。此时我们可以考虑在拍摄快照时切换原始实例上的标志,但是禁用和重新启用此标志会产生负面影响,包括:

There is a way to disable automatic backups for existing instances 
however we highly discourage against this because it disables point-in-time
recovery. Once disabled, re-enabling them will only restore the backups
starting from the time you re-enable automatic backups.

我们将丢失原始实例上的所有现有备份。最终结果是没有一种有效的方法来避免在从快照创建实例时创建第一个备份。

更新现有实例时有更好的消息,因为我们可以在 ModifyDBInstance 请求中禁用备份:

https://rds.amazonaws.com/
  ?Action=ModifyDBInstance
  &DBInstanceIdentifier=mydbinstance
  &BackupRetentionPeriod=0

当然这还是有备份丢失的问题;然而,我最初的目的是能够创建和修改生产数据库的快照,在短时间内(几小时)使用它们,然后将它们丢弃。避免创建无关的备份可减少此过程中的开销。

希望此信息对其他人有用!

如果您使用 Terraform 创建 RDS 实例,

source = "github.com/terraform-aws-modules/terraform-aws-rds.git"

虽然还是要设置例如,

maintenance_window = "Mon:00:00-Mon:03:00"
backup_window      = "03:00-06:00"

可以设置

skip_final_snapshot= true

并且不会创建快照。

斯洛米