当前位置: 首页 > 知识库问答 >
问题:

如何备份 Azure 表和 Blob

扶高歌
2023-03-14

我将数据存储在Azure存储表和blob存储中。我想自动备份我的数据,以防止用户或软件问题意外损坏数据。Microsoft对此没有一个好的解决方案,虽然有自动备份的付费解决方案,但似乎应该有一种直接的方法来备份和恢复此数据。

共有3个答案

皮安顺
2023-03-14

你还可以使用第三方工具,如 Cerebrata Azure 管理 Cmdlets 或 Microsoft Azure 存储团队宣布的功能异步复制 Blob,这些功能基本上允许你将数据从一个存储帐户复制到另一个存储帐户,而无需在本地下载数据。

查看线程了解更多信息:备份Azure Blob存储内容的最佳方式是什么?

希望这有帮助。

黄信厚
2023-03-14

我们编写了一个.NET库来备份表和blob。您可以在azure函数定时器触发器中轻松实现这一点。

在这篇博客中,我解释了如何使用Azure函数来实现它。

[FunctionName("Function1")]
public static async Task Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log, ExecutionContext context)
{
  var sourceAccountName = Environment.GetEnvironmentVariable("BackupSourceAccountName");
  var sourceKey = Environment.GetEnvironmentVariable("BackupSourceAccountKey");

  var backupAzureStorage = new Luminis.AzureStorageBackup.BackupAzureStorage(sourceAccountName, sourceKey, log, context.FunctionAppDirectory);

  var destinationAccountName = Environment.GetEnvironmentVariable("BackupDestinationAccountName");
  var destinationKey = Environment.GetEnvironmentVariable("BackupDestinationAccountKey");
  var destinationContainerName = Environment.GetEnvironmentVariable("BackupDestinationContainer");

  // Backup Tables
  await backupAzureStorage.BackupAzureTablesToBlobStorage("table1,table2", destinationAccountName, destinationKey, destinationContainerName, "tables");

  // Backup Blobs
  await backupAzureStorage.BackupBlobStorage("container1,container2", destinationAccountName, destinationKey, destinationContainerName, "blobs");
}
蒯卓君
2023-03-14

在对自动备份数据的最佳方法进行了大量研究后,我发现最简单的方法是在使用 AZCopy 的 Azure 虚拟机上的 Windows 任务计划程序中安排作业。 AZCopy 负责将表数据移动到 VM,然后返回到 Azure 中的辅助 blob 存储以保存备份。批处理文件还会导致 AZCopy 将 blob 从源存储帐户直接复制到目标帐户中。

您可以看到我是如何完成这项工作的详细描述,其中包含指向批处理文件的链接,我使用这些文件在该链接处自动执行备份:http://www.eastfive.com/2016/03/01/automated-backup-of-azure-storage-tables-and-blobs/

02/08/2018 更新此答案:我在 2018 年 1 月 18 日向 Azure 支持部门提出了这个问题,假设他们现在肯定有办法通过 Azure 中的服务执行此操作。不幸的是,事实并非如此,并且(根据Microsoft支持)没有比首次提出此问题时存在的方法更好的方法来进行表备份。这是来自01 / 24 / 2018的支持的答案:

“我已经审查了您的案例,不幸的是,没有办法对整个帐户或容器进行快照,因此使用Azure存储进行快照的唯一方法是通过blob迭代和应用快照,然后将快照迁移到辅助帐户。或者,您可以简单地将实际文件复制到另一个帐户,但这会有更高的延迟,存储容量成本更高,而快照占用的空间更少,传输速度更快。< br >我们支持的迁移方法是AzCopy和数据移动库,它们可用于在Java或C#中定制迁移解决方案。< br >如果您想要html" target="_blank">自动化这些流程,那么您可以通过Powershell和Azure Automation或Azure功能来实现,但是这些解决方案的帮助可能需要通过另一个支持请求来提出,因为我的团队只支持Azure存储。”

因此,仍然没有自动完成这些备份的方法。我的团队正在开发一个库来做备份。当我们完成后,我会在这里发布。

2018年8月5日对此答案的更新:如前所述,我的团队一直在开发一个库来自动备份。您可以在此处找到该项目:https://github.com/eastfivellc/EastFive.Azure.Storage.Backup.请随时捐款。

2018年10月18日更新:我能够使用Azure数据工厂功能在Azure中复制数据。我使用数据工厂将数据从源传输到表和blob的目标存储。但是,数据移动成本过高(每备份数百美元)。因此,这不是备份的解决方案。正如我在上面的帖子(以及下面的答案)中提到的,Azure数据移动库是这里的最佳解决方案。

 类似资料:
  • 我需要将数据从一个azure表存储迁移,基本上是从一个表迁移到另一个表(两个表既可以在同一订阅中,也可以在不同订阅中)。 在Azure表存储中是否有任何方法可以像在SQL存储中那样实现上述要求,在SQL存储中用户可以生成整个数据库或单个表的脚本或备份。

  • 我无法找到通过 CLI 创建自定义备份策略的方法 https://docs.microsoft.com/en-us/cli/azure/backup/policy?view=azure-cli-latest 但是,这可以通过REST API调用来完成https://docs.microsoft.com/en-us/azure/backup/backup-azure-arm-userestapi-c

  • 这小节我们要讨论应用程序管理的另一个方面:生产服务器上数据的备份和恢复。我们经常会遇到生产服务器的网络断了、硬盘坏了、操作系统崩溃、或者数据库不可用了等各种异常情况,所以维护人员需要对生产服务器上的应用和数据做好异地灾备,冷备热备的准备。在接下来的介绍中,讲解了如何备份应用、如何备份/恢复Mysql数据库和redis数据库。 应用备份 在大多数集群环境下,Web应用程序基本不需要备份,因为这个其实

  • 问题内容: 默认情况下,备份整个数据库。我需要在MySQL中备份单个表。可能吗?如何还原? 问题答案: 从.sql转储并还原单个表 倾倒 从远程数据库转储 进一步参考: http://www.abbeyworkshop.com/howto/lamp/MySQL_Export_Backup/index.html 恢复 或一行 转储并从压缩(.sql.gz)格式还原单个表 图片来源:John McGr

  • 问题内容: 我有一些数据存储为。当我要备份此数据时,java会永远绑定两个对象。这意味着当我更改数据值时,此更改将备份。我试图将数据中的值分别复制到循环中的备份中,试图使用方法-没有任何帮助。 问题答案: 我认为您需要针对单个对象。克隆不是“深入”;它只会克隆对对象的引用。

  • 正确的方法是什么?我是不是只是抄了这本书。sq3文件? 如果网站上有用户,并且在复制文件时正在编写文件,该怎么办?