在发生全球灾难恢复时,我们必须将数据库备份存储在不同的 AWS 账户中。 Aurora RDS 可以将数据库备份复制到不同的区域或不同的账户,但不能同时复制到两者。此外,如果使用 AWS 托管密钥部署 Aurora 数据库集群,则不支持跨账户复制。更改集群密钥需要重新部署集群。
对于此类用例,方法之一是使用 AWS 备份
对于此类用例,可以使用 AWS 文档中描述的方法之一:通过跨账户和跨区域备份保护加密的 Amazon RDS 实例。
但是AWS文档是基于AWS cloudformation模板的。我使用 terraform 重新创建了它。
此方法提供了跨账户和跨区域将 AWS Aurora 备份复制到 Vault 的灵活性。我们不需要使用自定义 KMS 密钥来部署 Aurora 集群。
该解决方案使用 AWS Backup 计划创建 Amazon RDS 数据库到源保管库(产品区域、产品账户)的计划备份。
同一备份计划定义了复制规则,该规则将备份复制到同一帐户但位于 DR 区域(产品帐户、DR 存储区域)中的中间保管库。
然后,该解决方案使用 EventBridge 捕获 AWS Backup 复制作业成功完成的情况,并使用这些事件触发 AWS Lambda 函数。然后,AWS Lambda 函数使用 AWS Backup 执行另一个备份复制作业,将备份从 Prod 账户中的中间保管库复制到 DR 账户中的目标保管库(DR 账户、DR 存储区域) .
来源:https://aws.amazon.com/blogs/storage/protecting-encrypted-amazon-rds-instances-with-cross-account-and-cross-region-backups/
生产账户中使用默认 RDS KMS AWS 托管密钥加密的 RDS 数据库实例由 AWS Backup 备份到 SourceVault(配置为使用 cmk-source-vault-account-a-region-a 加密) ),然后将备份复制到 IntermediateVault(配置为使用 cmk-intermediate-vault-account-a-region-b 加密)。尽管 SourceVault 配置为使用“cmk-source-vault-account-a-region-a”加密,但存储在 SourceVault 上的 Amazon RDS 快照仍使用默认的 RDS KMS AWS 托管进行加密密钥(aws/rds)。将快照从 SourceVault 复制到 IntermediateVault 的步骤将解密快照并在 IntermediateVault 中使用“cmk-intermediate-vault-account-a-region-b”重新加密快照。然后,可以将“cmk-intermediate-vault-account-a-region-b”客户管理密钥共享到 DR 备份帐户,以用于跨帐户复制。在跨账户复制期间,快照将使用目标保管库密钥“cmk-destination-vault-account-b-region-b”再次重新加密。
复制到 IntermediateVault 完成后,生产账户(账户 A、区域 A)中的 EvenBridge 规则会识别“复制作业完成”事件,并将该事件转发到账户 A、区域 B 中的 EventBridge,该事件在Turn 触发 Lambda 函数。 Lambda 函数将检查恢复点上是否存在适当的标签,并请求 AWS Backup 将备份从生产账户(账户 A、区域 B、IntermediateVault)复制到 DR 备份账户(账户 B、区域 B、DestinationVault)实现跨账户、跨Region的备份副本。
优点
缺点
实施
先决条件
备份流程
RDS/S3/EFS 实例 → AWS 备份到您账户的保管库 → 从您的保管库跨账户复制备份到 GDR 保管库
您可以从Github Repo获取Terraform代码
以上是AWS Aurora 的全球灾难恢复的详细内容。更多信息请关注PHP中文网其他相关文章!