划分备份工作负载(Azure 存储)

划分备份工作负载(Azure 存储)

我们在 Azure 服务上运行,我正在备份它们的 blob 存储。Azure 上似乎没有提供任何可实现此目的的功能。存储帐户提供冗余,但不提供备份。

我正在寻找以合理方式分解工作负载的方法,但不知道是否有这方面的最佳实践或想法。我有几百个带编号的容器,其中一些容器中有数千个文件,因此按照复制的速度,这项工作将需要大约 15 天的时间。由于 Azure 自动化环境的限制,我的脚本只能运行 3 个小时。

我编写了一个脚本,用于遍历所有容器和 blob。我需要检查每个 blob 是否存在于备份容器中。如果不存在,则复制它。

我将其分解为 40 个容器的手动组,但即使是这些组也需要超过 3 小时(至少在第一次运行时)。此外,这种解决方案并不是真正可扩展的。我们一直在添加客户,我不想手动维护列表。

由于容器是有编号的,我考虑采用某种模数划分来分解工作量,我可以将其分为 10 个不同的作业,这很粗糙,但可行,但一旦我们有足够的活动来减慢速度,可能会在不久的时间内中断。

想知道其他人是否遇到过类似的问题,以及是否有其他方法可以解决这个问题。

最后,我可以将所有这些移动到虚拟机并从那里运行工作负载,但我倾向于使用可用的平台功能。

答案1

如果您想继续使用 Azure 自动化,则需要执行以下操作之一:

  • 将任务拆分成足够小的单元,以便在 3 小时内完成(增长的开销很大),并并行运行作业或
  • 在备份脚本中添加检查点,以允许 Azure 自动化在达到 3 小时时恢复作业,但是我的经验是,作业可能需要一些时间才能重新启动,这对于您希望在规定时间内进行的备份来说并不理想

您可以考虑进行增量备份或仅复制更改的内容,但显然请记住,如果您进行这些备份的目的是避免意外删除或损坏,那么您就不会只是进行更改的纯粹复制,否则您只会复制损坏的内容。

如果您得出的结论是 Azure Automation 无法工作,那么您需要在 VM 上将该作业作为计划任务运行,或者可能要考虑 Azure Functions。Azure Functions 可以让您自由地运行不受限制的服务器进程,但只需为备份处于活动状态的时间付费即可。我还没有测试过,但本文似乎取得了一些成功。

最后的选择是寻找一些可以为你完成此操作的第三方工具,例如樱桃安全(我再次没有测试过这个,只是知道有些人使用它)。

希望 MS 最终能够推出一个工具来实现这一点。

相关内容