如何定期将Geo-Replicated Azure数据库(PaaS)数据下载到On-Premise数据库

时间:2018-02-07 05:12:20

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

我们在Azure SQL(平台即服务)中有一个地理复制数据库。这是主/从类型排列,因此地理复制数据库是只读的。

我们希望定期从此Azure SQL数据库将数据下载到具有相同架构的本地SQL Server数据库,而不会过多地影响性能(Azure数据库是应用程序使用的主数据库)。

我们最初查看了Azure SQL数据同步,希望从地理复制数据中读取数据并将其下拉到内部部署,但它需要创建触发器+跟踪表。我对此感到不太满意,因为无法在只读的从数据库上运行它,因此必须在事务主数据库上设置(影响应用程序性能),这反过来会重新设置 - 在地理复制数据库上创建这些额外的数据同步工件。看起来很乱,数据量很大(我们有大量的表和数据,而且Azure PaaS数据库的大小也是有限的)我们也使用Redgate数据库生命周期管理,这可能会破坏这些模式对象并跟踪表格每次我们执行发布时,因为它们不是由我们创建的,并且不在我们的源代码控制中。

还有哪些其他可行的选择(其他选择远离PaaS,在内部和云上创建集群IaaS VM环境,安装SQL Server,打补丁等)。请记住,我们的员工资源非常紧张,这就是为什么PaaS最初是我们数据库的理想之地。

我应该提一下,我们希望On-Premise数据库与Azure数据库“相对”同步,但内部部署的数据最长可达一小时。

在我的头顶,一些选项可能是SSIS包?或者以某种方式定期下载数据库的Bacpac并每隔30分钟在本地恢复(但它是一个非常大的数据库)。

注意,在此阶段只需要单向(Azure到内部部署)。

1 个答案:

答案 0 :(得分:1)

您可以试一试Azure数据工厂,因为它允许您将数据附加到目标表,或者在SQL Server用作“接收器”时在复制期间使用自定义逻辑调用存储过程。您可以了解更多here

Azure数据工厂允许您通过使用具有上次更新时间戳或递​​增键的水印列,在初始完整数据加载后逐步加载数据(增量)。增量加载解决方案在旧水印和新水印之间加载已更改的数据。您可以在this文章中了解有关如何使用Azure Data Factory执行此操作的更多信息。

希望这有帮助。