我在生产数据库上设置了 Azure SQL Georeplication。这个过程已经运行了一段时间。地理复制数据库位于弹性池中的另一台服务器上。我现在想保持本地数据库同步,并且正在考虑设置 Azure SQL 数据同步 (ADS)。我的偏好是在 georeplicated 副本和本地 SQL 之间进行 Azure 数据同步工作。在该模型中,Azure Georeplication 保持原样工作,并且来自 relica 的数据同步到本地服务器。
我已经阅读了 Azure 数据同步的所有限制,并没有说这个模型不起作用。就我而言,我在数据模型中有超过 500 个 tables ,只有 25 个左右需要同步。当我使用 Azure 门户设置这些 tables 时,它错误地说 ADS 仅支持 500 tables。对此的官方解决方法是创建一个仅对我要复制的 tables (25)具有权限的用户,并使用该用户连接到集线器数据库。
因为副本是只读的(因为它是镜像副本),所以 CREATE USER 语句失败,抱怨数据库是只读的。
我的问题:在 Azure SQL 数据同步中使用地理复制数据库作为中心数据库是否可行?我可以在基础数据库中创建将复制到地理复制数据库的用户,但感觉就像管道一样,更糟糕的是,当我添加我复制的 tables (25)时,它需要在那些 tables 上创建触发器由于复制数据库的只读属性,也可能会失败。
任何见解都值得赞赏。
谢谢...
回答1
Azure SQL 数据同步在这种情况下不起作用,因为如果发生故障转移,SQL 数据同步将失败。
如果您考虑一下,Azure SQL 数据同步已经为您提供了异地复制的好处。我的意思是 SQL 数据同步也可以帮助您跨数据中心和本地复制数据。
基于上述考虑,我将删除异地复制并使用 SQL 数据同步设置 2 个 Azure SQL 数据库和一个本地 SQL Server 实例。面向 Azure SQL 的应用程序可以连接到任一 Azure SQL 数据库,如果它们无法连接到其中一个,则可以连接到另一个。使用 SQL 数据同步,您可以让您的用户连接到离他们最近的 Azure SQL 数据库。
本地应用程序如果无法连接到 Azure SQL,则可以连接到本地 SQL。