如何备份ebs快照中的数据?

Posted

技术标签:

【中文标题】如何备份ebs快照中的数据?【英文标题】:How to do backup for data in ebs snapshot? 【发布时间】:2017-04-23 09:18:13 【问题描述】:

我公司有一个灾难恢复需求,这个需求考虑了 AWS 故障,比如 AWS 由于某种原因无法使用,我们需要能够在其他云提供商中快速恢复我们的应用程序,比如 Azure。

目前我们的解决方案是

    为我们的应用程序定期运行的 ec2 实例拍摄快照,这些快照是存储在 AWS 中的基本备份(在 S3 上不可见)。 每天凌晨 0 点拍摄最新快照,并创建 EBS 卷 创建临时 EC2 实例 将第 2 步中创建的卷附加并挂载到第 3 步中创建的实例。 Tar 实例上的文件,然后上传到 s3(我们有一些神奇的工具可以将特定存储桶中的文件复制到 Azure。)。 删除卷并终止实例。

这个解决方案可行,但它有一些问题,有没有其他更好的方法来完成这个要求?

【问题讨论】:

您遇到的具体问题是什么? @NHol,问题是我们必须创建很多临时的 ec2 实例,因为整个过程需要几个小时,而且这需要定期运行,这会不断增加成本,我们想要如果有办法,可以为公司节省/减少这笔费用。 【参考方案1】:

如果您已经自动化了这些步骤(AWS CLI 就足够了),那么您的解决方案就简单而有效,唯一更简单的事情就是对源实例上的文件进行 tar,但这可能会影响它提供的任何服务。

微软的解决方案是使用 Azure Site Recovery:

https://docs.microsoft.com/en-us/azure/site-recovery/site-recovery-migrate-aws-to-azure

【讨论】:

我们可以像你说的那样 tar 源实例上的文件,这样可以节省一些成本,但是我们不能并行备份,因为用户(我们,我们在企业中,有一些权限限制)一次只能挂载一个卷。 您将为源上的备份安装哪个卷?是存储 tar 还是以某种方式存储 s3 副本? 我们挂载从快照创建的卷,然后tar内容,然后将tar文件复制到s3。因此,如果我们有 3 个快照需要进行备份,我们将不得不挂载 3 个卷,除非我们按顺序进行。所以在这种情况下我们必须创建 3 个临时实例,挂载这三个卷 1-1,然后到 tar 并复制到那里。谢谢。 :) 我的建议是从源 ebs 对源实例进行 tar,而不是使用 ebs 快照。要实现这一点,如果您在磁盘上有数据更改,您可以使用设备映射器快照kernel.org/doc/Documentation/device-mapper/snapshot.txt 这种方式对我们来说可能是一种新的方式,我会和团队一起看看和讨论,看看我们能不能让它发挥作用。非常感谢。【参考方案2】:

如果您预计 AWS 会中断,那么假设您将能够创建另一个实例并恢复您的快照不是无效的吗?我的意思是,如果是这样,你为什么不继续在 AWS 上运行?

我认为您的快照策略可以防止 EC2 故障,但 AWS 不行。要涵盖第二种情况,请将您的数据备份到 S3 并定期将其复制到 Azure。

您将需要支付额外的数据传输成本(而且成本可能很高),但这是确保您无需等待 AWS 恢复(可能需要多长时间?)来移动数据的更安全方式。

【讨论】:

我认为这个想法是这些快照被用于每天创建临时卷并将内容导出到 EC2 之外,以便在发生中断时它们已经可用.从技术上讲,它是有效且可行的,但它似乎确实是一个以艰难的方式做事的案例,特别是因为 (iirc) 在两个地理区域从未发生过同时发生的灾难性故障。如果这是优先级故障场景,在另一个云中部署实时热备用似乎更明智。 @Michael-sqlbot 是的,同意机会接近 0。我理解(我的答案基于此)他只是将数据复制到 Azure,以防万一发生故障。如果我误解了这一点,那你是完全正确的。

以上是关于如何备份ebs快照中的数据?的主要内容,如果未能解决你的问题,请参考以下文章

将 EC2 快照移动到 S3 存储桶

Cassandra 使用 EBS 快照和 NodeTool 快照进行备份和还原

如何为每个 AMI/EBS 设置自动计划快照?

如何从备份中排除附加到 EC2 实例的某些 EBS 卷?

利用lambda函数自动创建EBS快照和删除快照

Amazon AMI 和 EBS 快照有啥区别?