14

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

4

2 回答 2

33

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

这里有一些更多细节,以防其他人遇到与我相同的问题。

我对两种情况感兴趣:

  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

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

希望这些信息对其他人有用!

于 2016-03-01T18:49:23.520 回答
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

并且不会创建快照。

什洛米

于 2021-04-05T02:37:13.810 回答