【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
AWS数据库容灾
项目要求
A账号定时将本账号北京区的RDS数据库进行快照备份,并将备份的快照分享给B账号,B帐号收到分享后及时将分享的快照复制到自己的北京区RDS快照组中进行备份。
解决方案
- A账号中:
- 创建一个名为timer-trigger-lambda 的CloudWatch Scheduler Event用于定时触发lambda函数。
- 创建一个名为timer-create-dbSnapshot的lambda函数,当收到定时的Event触发时对要求的rds(或列出所有的rds)进行打快照处理
- 创建一个名为notify -manualCreateSnapshot-SNS-lambda的RDS时间订阅,订阅指定RDS实例(或所有实例)的快照处理事件,并将事件发送给SNS topic。
- 创建一个名为find-new-rds-snap的SNS的topic,用于接收RDS快照事件订阅并将订阅的事件转发给lambda函数,触发快照分享操作。
- 创建一个名为share-dbSnapshot-to-B的lambda函数,当接收到SNS的触发时进行指定快照的分享给B账号,并将过期的快照删除,并将结果发给SNS去通知B账号进行快照复制操作。
- 创建一个名为notify-to-B-NewShareSnapshot的SNS topic,用于接收lambda函数的通知,并将通知转发给B账号。
- B账号中
- 创建一个名为get-new-dbSnapshot-share的SNS topic,用于接收A账号 的SNS通知,并将通知转发给lambda函数,触发快照复制操作。(1.0版本,已放弃,本文不接收)。
- 创建一个名为copy-dbSnapshot的lambda函数,当接收到SNS的触发时,将指定的分享快照进行复制操作,并将结果发送给SNS以告知管理员备份结果。
- 创建一个名为notify-RDSbackupResult-to-admin的SNS topic,用于将备份结果通知到管理员邮箱
实际步骤
由于项目保密性原因实际步骤就不做详细介绍了。有兴趣的朋友根据解决方案一步步做就可以实现,难点在于跨账号的SNS触发lambda需要通过AWS CLI来实现,控制台暂时没有提供这一功能。 相关的操作也可以参考我的其他AWS文章。
来源:oschina
链接:https://my.oschina.net/u/3715849/blog/1829226