自动备份AWS RDS MySQL的serverless解决方案
AWS RDS MySQL 自动备份工具
AWS RDS自带了备份功能,只需要在数据库初始化阶段打开即可。
Additional Configuration -> Backup
有两个不方便的点
- AWS RDS的备份文件没有提供下载选项,不能还原到本地数据库。
- 另外,如果是自己maintain的mysql数据库实例,有时候也需要做定期备份。
这里介绍一个使用serverless部署lambda,利用CloudWatch schedule定期备份mysql数据库到S3的解决方案:
源码
涉及的技术
- serverless
我一般用serverless framework部署lambda,它同时会生成lambda的依赖性,例如S3 Bucket, IAM Policy和CloudWatch的schedule - CloudFormation
serverless部署到AWS,本质上,在后台是翻译成CloudFormation支持的语法,最终部署到AWS上。在写serverless脚本的时候,特别是写resources节点的时候,如果不知道怎么写,可以参考CloudFormation的文档 - typescript
现在比较习惯用typescript写nodejs代码,因为可维护性比较强;同时我选择的lambda运行时是node.js, 在部署的时候需要将typescript translate to JavaScript - mysqldump
mysql官方给的备份工具就是mysqldump, 在这里我找到一个nodejs的实现npm包