【问题标题】:Copying data from azure table storage for the past 30 days从 Azure 表存储复制过去 30 天的数据
【发布时间】:2020-01-28 09:13:52
【问题描述】:

我们正在将手动管理的生产环境迁移到 Terraform,并且在此过程中将重新创建环境所需的所有资源。其中一种资源是存储帐户。

我们有一个存储帐户,其中包含近 1500 多个表,每个表由数百万条记录组成,每条记录都附有时间戳。在迁移过程中,我们最感兴趣的是复制过去 30 天的记录。

我想知道是否有一种工具可以帮助我们最有效地执行此复制操作并且耗时更少。

我们研究了 Azcopy,但它只允许我们进行一对一的复制,复制数十亿条记录可能需要几天时间,而且根据我在网上了解到的情况,Azcopy 不支持仅从某个时间戳复制几天的查询。

有助于了解我们可以采用哪些不同工具和技术来实现这一目标。

【问题讨论】:

  • 您找到更好的解决方案了吗?
  • @IvanYang 感谢您的回复。我做了以下事情: * 使用 Azure 数据工厂从一开始就进行一对一的复制,运行了将近 80 个小时 * 使用此处提到的 cosmos DB 库创建了一个 C# 应用程序:paulomarquesc.github.io/… 复制增量(数据在数据工厂作业执行期间添加)*
  • 好的,您可以通过发布答案来分享您的解决方案:)

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


【解决方案1】:

据我所知,没有这样的工具可以从指定的时间戳复制表存储。您应该编写自己的逻辑以从指定的时间戳中进行选择,但这会导致性能不佳。

在这里,我建议你可以使用一个名为EastFive.Azure.Storage.Backup 的工具。它支持将 azure blob / azure table 存储复制到新的存储帐户。而对于azure表存储,支持指定partition_key的copy数组,但不支持指定timestamp。

如果您对此感兴趣,可以按照以下简单步骤操作:

1.在D盘创建一个名为“backup”的文件夹,然后将Prerequisites中提到的4个项目全部下载到D:\backup。

2.将4个项目全部解压,在visual studio中一一打开->在visual studio的manage nuget包中,更新所有旧包->一一构建,确保每一个都是构建成功。

3.打开EastFive.Azure.Storage.Backup项目中的backup.json,填写你的sourceConnectionStringtargetConnectionString

如果您不想复制 blob,只需删除 blob。

末尾的timeLocal字段表示根据您的当地时间何时运行复制活动。

4.您可以install it as a service,并启动服务运行复制活动。

我在我这边测试了一下,我所有的azure table存储都复制到了新的存储账户中,截图如下:

【讨论】:

    猜你喜欢
    • 2013-05-19
    • 2020-09-01
    • 2017-03-20
    • 2022-01-09
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多