转自亚马逊AWS官方博客
该方案模拟在阿里云上的WordPress cluster应用通过
Cold Backup 的方式备份到 AWS 宁夏区域。
RTO 和 RPO 目标均为 24 小时 。
阿里云上的部署如下:
- RDS MySQL: WordPress 数据库
- 云数据库版Redis: 使用 Redis Object Cache 插件,使得 WordPress 支持Redis 作为缓存
- 对象存储OSS: WordPress 的文件存储在 OSS 上,通过 OSSFS 软件挂载到 ECS
- 云服务器ECS: 安装 WordPress 应用,ECS 通过弹性伸缩服务实现自动伸缩
- 负载均衡SLB: 作为负载均衡,将接收到的流量转发给后端的 WordPress 集群
架构

解决方案
备份方案
- 把阿里云数据库和OSS中的数据每天备份并传输到AWS平台上,一旦阿里云环境出现故障,可以在AWS平台上快速启动应用系统。
- 本方案中暂时不考虑直接迁移阿里云的ECS服务器到AWS平台,因为如果直接迁移阿里云的ECS镜像到AWS的话,该镜像里会有很多阿里云平台的一些进程,可能会带来很多复杂的情况。因此假定应用系统预先在AWS上做好了AMI。
- 每天对阿里云的RDS进行备份,并把备份文件传输到AWS S3。
- 启动一台阿里云ECS服务器,并挂载普通云盘,其大小与OSS上要同步的文件大小相同。并通过脚本每天进行增量同步到本地磁盘,然后通过awscli的s3命令sync到AWS S3。
- ELB,NAT, Redis, App, Database 这些都不启动,等到受灾之后通过脚本启动。
恢复方案
- 通过阿里云MySQL RDS在S3中的备份,恢复一个新的Amazon RDS实例。
- Redis不含持久化数据,无需实现复制,只需script启动即可。
- 提前在宁夏区配置好网络环境,当灾难发生时,通过脚本启动资源;手动或者通过脚本自动导入 MySQL 数据
恢复脚本及使用方法已上传到lab798/aws-dr-samples。
备份步骤
RDS 数据库备份
备份OSS的数据到AWS S3
自动化备份
- 编写 cronjob,每天晚上定期执行 backup.sh,比如下面的例子表示每天晚上10:30进行备份:
30 22
* * * /root/backup.sh
返回技术博客