我正在从快照创建新的RDS MySQL实例,并通过API和UI更新其配置。无论我如何创建或更新实例,这些操作都会自动触发通过某种自动备份过程创建的新快照。有没有办法在执行这些操作时禁用快照创建,因为我不需要额外的快照,而且它们的创建会造成不必要的延迟?
答案 0 :(得分:25)
我采访了AWS支持,看起来无法阻止在实例创建时生成备份。这是由于创建/更新上的备份创建如何被触发(它是自动备份过程的一部分)以及控制此功能的能力有限(打开和关闭它,但仅限于现有实例)。
以下是一些更多细节,以防其他人遇到与我相同的问题。
我对两种情况感兴趣:
备份由此标志控制:
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
并且不会创建快照。
施洛米