拍摄 EC2 实例 运行 MongoDB 快照的最佳方法是什么?

What is the best way to take snapshots of an EC2 instance running MongoDB?

我想自动拍摄附加到 EC2 实例的卷的快照 运行 我们生产的主节点 MongoDB 副本集。在尝试评估 Google 的陷阱和最佳实践时,我发现创建快照时很可能会出现数据不一致和损坏的情况 但未启用日志功能 ,在我们的例子中就是这样。

所以我的问题是 - 继续执行 aws ec2 create-snapshot --volume-id <volume-id> 以获得数据的干净备份是否安全? 此外,我计划通过每周运行一次的 cron 作业来执行 运行 相同的命令。这是一个足够好的计划来安排备份吗?

对于 EC2 实例上的 MongoDB,我执行以下操作:

  1. mongodump 到 EBS 卷上的备份目录
  2. 压缩 mongodump 输出目录
  3. 将 zip 文件复制到 S3 存储桶(启用加密和版本控制)
  4. 启动 EBS 卷的快照

我编写了一个脚本来执行上述任务,并通过 cron 每天将其安排到 运行。现在,您将在 EC2 实例、EBS 快照和 S3 上备份数据库。您可以更进一步,在 S3 存储桶上启用跨区域复制。

此设置提供多级备份。您现在应该能够在 EC2 故障、EBS 故障、AWS 可用区故障甚至整个 AWS 区域故障的情况下恢复您的数据库。

我建议阅读有关 EC2 部署的官方 MongoDB 文档: https://docs.mongodb.org/ecosystem/platforms/amazon-ec2/ https://docs.mongodb.org/ecosystem/tutorial/backup-and-restore-mongodb-on-amazon-ec2/