在创建/更新实例时禁用AWS RDS备份?

时间:2016-02-29 20:38:25

标签: amazon-web-services database-backups mysql-backup aws-rds

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

2 个答案:

答案 0 :(得分:25)

我采访了AWS支持,看起来无法阻止在实例创建时生成备份。这是由于创建/更新上的备份创建如何被触发(它是自动备份过程的一部分)以及控制此功能的能力有限(打开和关闭它,但仅限于现有实例)。

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

我对两种情况感兴趣:

  1. 不要在RestoreDBInstanceFromDBSnapshot请求上创建备份
  2. 不要在ModifyDBInstance请求上创建备份
  3. 备份由此标志控制:

    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
    

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

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

答案 1 :(得分: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

并且不会创建快照。

施洛米