繁体   English   中英

如何备份 Azure 表存储

[英]How to make backup of Azure table storage

我有一个需求,我需要将数据从一个 azure 表存储迁移,基本上是从一个表迁移到另一个表(两个表可以是相同的订阅或不同的订阅)。

在 Azure 表存储中是否有任何方法可以像在 SQL 存储中那样满足上述要求,用户可以在其中生成脚本或备份整个数据库或单个表。

简短回答:没有内置备份。 更长的答案:

  • 没有用于表存储的内置备份服务或“快照”功能(blob 具有):您需要执行自己的复制操作,从一张表到另一张表。 有一个 REST API 以及 SDK、PowerShell cmdlet、CLI 命令和 AzCopy(均基于 API 构建)。 您还可以搜索许多 3rd 方工具。 如何完成表复制取决于您。

  • 表存储是持久存储 - 在一个区域内进行三次复制(并且可以选择异地复制到另一个区域)。 即使存储在主要区域中变得不可用,您也可以选择从配对区域读取(假设您已启用存储帐户为异地冗余)。 注意:这与备份不同 - 如果您删除表中的实体,则该删除会复制到任何地方

  • 无论订阅如何,存储复制(例如,将实体从一个表复制到另一个表)都是相同的。 存储帐户以帐户命名空间 + 访问密钥(以及可选的 SAS)为键。

我意识到这是一个老问题,但我想我会把这个回答留给那些仍在寻找在 2018 年备份 Azure 表数据的方法的人。

我已经看到很多关于使用 AzCopy 的建议,这看起来是一个很好的方法。

但是,如果使用 C# 更适合您,我在 github 上编写了一个工具(我的工作场所允许我开源): https : //github.com/Watts-Energy/Watts.Azure#azure-data-factory

该项目的主要目标不是备份,但它可以用来做到这一点,我们在 Azure Web 作业中使用其中的功能运行备份。 我们开源它是因为我们认为它可以证明对除我们之外的其他人有用,因为它允许您进行“增量”备份,我不知道您是否可以使用 AzCopy 完成。 我不是说你不能,只是我不知道这是否可能。

这个想法是您在 .NET 中创建一个小型控制台应用程序(例如作为 Azure Web 作业托管),您可以执行以下操作:

DataCopyBuilder
.InDataFactoryEnvironment(environment)
.UsingDataFactorySetup(environment.DataFactorySetup)
.UsingDefaultCopySetup()
.WithTimeoutInMinutes(numberOfMinutes)
.AuthenticateUsing(authentication)
.CopyFromTable(sourceTable)
.WithSourceQuery(null)
.ToTable(targetTable)
.ReportProgressToConsole()
.StartCopy();

如果您在作业运行时存储上次复制操作开始时的时间(以 UTC 为单位),则可以提供“源查询”(例如:“ Timestamp gt datetime'{lastBackupStarted.ToIso8601()} ”)而不是null就像上面的例子一样,它只会从那个日期起修改数据。 它在项目 README.txt 中有更详细的解释。

同样,不确定它是否对任何人有用,但它确实解决了我们遇到的一些挑战。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM