【问题标题】:How to make backup of Azure table storage如何备份 Azure 表存储
【发布时间】:2016-12-14 04:21:03
【问题描述】:

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

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

【问题讨论】:

标签: azure azure-storage azure-table-storage


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    我意识到这是一个老问题,但我想我会把这个回复留给那些仍在寻找 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 中有更详细的解释。

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

    【讨论】:

    • 这个库在备份 Azure 表时是否允许每行有不同的列,还是表中的所有行都需要具有相同的列?
    • 不保证。备份表时,它会查询前 1000 行并从中确定列。如果所有列都出现在前 1000 行中,那么一切都应该没问题,但如果没有,那些没有出现的列将不会被复制。您可能知道,Azure 表没有“架构”,因此无法保证所有列都会被复制,除非您检查表中的每一行。但是,如果您知道所有列都将存在于前 X 行中的某个位置,请克隆 Watts.Azure 存储库并将其检查的行数从 1000 修改为 X。
    • 这是通过修改github.com/Watts-Energy/Watts.Azure/blob/development/…中使用的值来完成的
    • 我还应该补充一点,该功能已经添加,这使得运行备份比我原来的帖子中描述的要容易得多。您现在可以使用内置备份功能,您可以在其中指定一个管理表(用于跟踪备份)并指定它们应该保留多长时间、应该多久运行一次增量备份以及何时切换到新的存储帐户.它在 README 中有记录(非常简短)。有兴趣的可以看看github.com/Watts-Energy/Watts.Azure/blob/development/…
    • 感谢您阐明备份如何确定选择哪些列以及构建一个很棒的库。我正在寻找像您这样的解决方案,但可以像 azcopy 一样使用每行架构备份 Azure 表。
    猜你喜欢
    • 2021-07-05
    • 2016-12-10
    • 2011-08-11
    • 1970-01-01
    • 2023-03-07
    • 2020-02-20
    • 2017-10-22
    • 1970-01-01
    • 2014-07-25
    相关资源
    最近更新 更多