企业备份&容灾系列 – 其他云服务商 to AWS Cold Backup 容灾解决方案

2021-03-15

转自亚马逊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 应用,通过弹性伸缩服务实现自动伸缩
  • 负载均衡SLB:将接收到的流量转发给后端的 WordPress 集群

架构

架构图

解决方案

备份方案

  1. 把阿里云数据库和OSS中的数据每天备份并传输到AWS平台上,一旦阿里云环境出现故障,可以在AWS平台上快速启动应用系统。
  2. 本方案中暂时不考虑直接迁移阿里云的ECS服务器到AWS平台,假定应用系统预先在AWS上做好了AMI。
  3. 每天对阿里云的RDS进行备份,并把备份文件传输到AWS S3。
  4. 启动一台阿里云ECS服务器,挂载普通云盘,通过脚本每天进行增量同步到本地磁盘,然后通过 awscli 的 s3 sync 命令同步到AWS S3。
  5. ELB、NAT、Redis、App、Database 这些都不启动,等到受灾之后通过脚本启动。

恢复方案

  1. 通过阿里云MySQL RDS在S3中的备份,恢复一个新的Amazon RDS实例。
  2. Redis不含持久化数据,无需实现复制,只需脚本启动即可。
  3. 提前在宁夏区配置好网络环境,当灾难发生时,通过脚本启动资源;手动或通过脚本自动导入 MySQL 数据。

恢复脚本及使用方法已上传到 GitHub: aws-dr-samples

备份步骤

RDS 数据库备份

# 备份数据库
mysqldump -h <host> -u root -p wordpress > wordpress.sql
# 上传到 S3
aws s3 cp wordpress.sql s3://<bucket>/<path>/

备份OSS的数据到AWS S3

# 挂载OSS bucket到本地目录后,增量同步到AWS S3
aws s3 sync <local_path> s3://<bucket>/<path>/

# 完整的 backup.sh 脚本
currentdate=`date +%Y%m%d`
mysqldump -h <host> -u root -p wordpress > wordpress.sql
aws s3 cp wordpress.sql s3://<bucket>/<path>/$currentdate/
aws s3 sync <local_path> s3://<bucket>/<path>/$currentdate/

自动化备份

编写 cronjob,每天晚上定期执行 backup.sh,例如每天晚上10:30进行备份:

30 22 * * * /root/backup.sh

返回技术博客