我有一个要求,我需要从一个azure表存储迁移数据,基本上从一个表迁移到另一个表(两个表可以是相同的订阅或不同的订阅)。
Azure表存储中是否有任何方法可以执行上述要求,例如SQL存储中用户可以生成脚本或整个数据库或单个表的备份。
答案 0 :(得分:0)
简短回答:没有内置备份。更长的答案:
没有用于表存储的内置备份服务,或者"快照"功能(blob有):你需要从一个表到另一个表进行自己的复制操作。可以使用REST API以及SDK,PowerShell cmdlet,CLI命令和AzCopy(所有这些都基于API构建)。您还可以搜索一堆第三方工具。如何完成表格复制取决于你。
表存储是持久存储 - 在区域内进行三重复制(并且可选地地理复制到另一个区域)。即使主要区域中的存储不可用,您也可以选择从配对区域进行读取(假设您已将存储帐户设置为地理冗余)。 注意:这与备份不同 - 如果删除表中的实体,则删除将在任何地方复制
无论订阅如何,存储复制(例如,将表中的实体复制到另一个表)都是相同的。存储帐户以帐户命名空间+访问密钥(以及可选SAS)为基础。
答案 1 :(得分:0)
我意识到这是一个古老的问题,但我想我会在那些仍在寻找方法在2018年备份Azure表格数据的人留下这个回复。
我已经看到很多关于使用AzCopy的建议,看起来这是一个很好的方法。
但是,如果使用C#更适合你,我写了一个工具(我的工作场所允许我开源),这是在github上: https://github.com/Watts-Energy/Watts.Azure#azure-data-factory
该项目的主要目标不是备份,但它可以用来做到这一点,我们使用其中的功能在Azure Web Jobs中运行备份。我们开源是因为我们认为除了我们之外,它可以证明对其他人有用,因为它允许你做“增量”。备份,我不知道你是否可以用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中有更详细的解释。
同样,不确定它对任何人是否有用,但它确实解决了我们遇到的一些挑战。