【问题标题】:How to migrate data from on premise database to Azure hosted database using ADF?如何使用 ADF 将数据从本地数据库迁移到 Azure 托管数据库?
【发布时间】:2018-03-15 13:07:49
【问题描述】:

问题看起来相当简单,但就我而言,它涉及到一些错综复杂的问题。所以这是交易:

  • 有一个本地托管的 sql 数据库和一个 sql Azure 托管的数据库。我们需要保持两个数据库同步。这些数据库包含 50 个表。
  • Azure 数据库不会被任何应用程序更新,但本地数据库将继续频繁更新。因此,我们需要将本地数据库中修改/插入的数据移动到 Azure 数据库。为此,我们正在使用 Azure 数据工厂 (ADF)

  • 所有数据库表都包含一个名为 LastModifiedDate 的列,指示记录的修改时间。

  • 目前我们已经创建了与所有 50 个表相对应的临时表。我们正在维护一个包含表名的水印表,它是最高的LastModifiedDate
  • ADF 作业中有一项活动执行存储过程,该过程从水印表中具有 LastModifiedDate > 对应 LastModifiedDate 的所有表中获取记录,并将它们转储到临时表中。
  • 此存储过程的执行完成后,暂存表中的所有数据都会与 Azure 数据库表同步。最后水印表被更新 每个表的 LastModifiedDate。然后刷新所有临时表。
  • 此过程将不断重复,因此每当本地数据更新时,Azure 数据库也会更新。

当前方法的问题:

创建与每个表相对应的临时表看起来不是一个好主意。如果数据库中的表数量增加,我们需要那些对应的临时表。

问题:

有没有更好的方法来处理这种情况使用 ADF 并且不创建大量临时表?

【问题讨论】:

  • 比如,一次性迁移还是连续迁移?
  • 是持续迁移
  • 数据工厂不是最适合您的用例的工具。听起来事务复制会更好,例如与 SQL 数据同步。 ADF 适合集成,但它不是数据库复制工具。如果您坚持使用 ADF,您将需要维护大量样板代码。这可以通过自动化代码生成变得更容易。另请注意,使用 ADF,您将永远无法实时复制到 Azure。
  • 嗨 - 最好使用 Azure Functions 来执行此操作,调用相同的存储过程,但这次将更新的数据放入 cosmos db,然后可以使用 cosmos 中的更改馈送处理器来跟踪更改,然后基于 Cosmos db 填充/复制您的 Azure SQL 或完全废弃 Azure SQL,只需使用 Cosmos Db 作为您的在线资源。

标签: sql-server azure azure-sql-database azure-data-factory


【解决方案1】:

您可以尝试改用 SQL Data Sync 并进行 SQL 数据同步,以便在一个方向同步,从本地到 Azure SQL 数据库。配置 SQL 数据同步时,在“同步方向”上选择“到中心”,如下图所示。

【讨论】:

  • 对不起,忘了提一件事,我们不允许使用除 ADF 以外的任何东西
猜你喜欢
  • 1970-01-01
  • 2015-09-11
  • 2019-01-16
  • 2018-03-14
  • 2016-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多