如何每天使用AWS复制生产数据库

时间:2019-04-11 09:14:07

标签: amazon-web-services amazon-rds

这里讨论的两个数据库是“实时”和“预实时”。每天清晨都有实时rds实例的快照。为了获得实时数据的全新副本,我们手动删除了prelive并使用实时快照从新创建它。 prelive主要用于复制数据特定的错误。我们如何才能轻松地自动化每天早晨从实时快照中获取新鲜的活动实例的过程?

1 个答案:

答案 0 :(得分:1)

您可以使用CloudFormation自动执行此过程。

您应该使用AWS::RDS::DBInstance资源为“活动前”环境创建堆栈。您需要指定DBSnapshotIdentifier属性,而不是对其进行硬编码,而是引用一个堆栈参数,它看起来像这样:

Parameters:
  Snapshot:
    Type: String

Resources:
  ...other resources...

  PreliveInstance:
    Type: AWS::RDS::DBInstance
    Properties:
      ...other properties...
      DBSnapshotIdentifier: !Ref Snapshot
      ...other properties...

  ...other resources...

这样,您可以在每天早晨通过CloudWatch Event触发执行以下操作的Lambda函数:

  1. 查找“实时”环境的最新快照的arn
  2. 使用第1步中的arn作为Snapshot参数的输入值来更新您的“活动前”堆栈。

由于DBSnapshotIdentifier是一个需要更新replacement的属性,因此将创建一个新的“ prelive”实例,并删除旧的实例。