导出 (0) 打印
全部展开

SQL 数据同步(预览版)最佳实践

注:本页面内容可能不完全适用中国大陆地区运营的 Windows Azure服务。如要了解不同地区 Windows Azure 服务的差异, 请参考本网站.

 

SQL Azure 数据同步图标

欢迎使用 SQL 数据同步(预览版)。本主题是您在设计和实现同步计划之前应该熟悉的五个主题中的第五个且最后一个主题。这五个准备性质的主题是:

已停止使用 Windows Azure Silverlight 门户上的 Windows Azure SQL 数据同步插件。今后请使用 Windows Azure 管理门户进行 Windows Azure SQL 数据同步。

您可以通过 Windows Azure 管理门户的“SQL Database”下的“同步”选项卡来访问 SQL 数据同步(预览版)。“同步”选项卡仅在具有一个或多个同步组时可用。有关在此门户创建和修改同步组的指南,请参阅主题如何:创建同步组 (SDS)

请参阅下方的导航一节,其中链接了开始操作前应阅读的主题以及有关创建和修改同步组的指导。

在本主题中

安全性和可靠性

代理

  • 使用具有网络服务访问权限的最低特权的帐户安装客户端代理。

  • 最好将客户端代理安装在并非您的本地 SQL Server 计算机的单独计算机上。

  • 不要向多个代理注册本地数据库。

    • 即使同步不同同步组中的不同表。

    • 将一个本地数据库注册到多个客户端代理会在删除某个同步组时产生问题。

具有最低特权的数据库帐户

  • 对于同步组:
    创建/更改表、更改数据库、创建过程、选择/更改架构、创建用户定义类型。

  • 对于正在进行中的同步:
    对为同步而选择的表、同步元数据和跟踪表执行选择/插入/更新/删除操作,对我们的服务创建的存储过程的执行权限,对用户定义表类型的执行权限。

  • 对于取消设置:
    对属于同步的表的更改,对同步元数据表的选择/删除,对同步跟踪表、存储过程和用户定义类型的控制。

对于因同步组中的数据库仅有一个凭据而导致的信息,如何进行处理?

  • 更改针对不同阶段的凭据(例如,cred1 针对安装阶段,cred2 针对正在进行中阶段)。

  • 更改凭据的权限(例如,在安装同步后更改权限)。

中心数据库的放置位置

企业到云方案:

使您的中心数据库接近同步组的数据库数据流量的最中心,以便尽量减少延迟。

云到云方案:

在某一同步组中的所有数据库都位于一个数据中心时,中心数据库应位于同一个数据中心。这将会减少延迟以及在数据中心之间传输数据的成本。

在某一同步组中的数据库位于多个数据中心时,中心数据库应位于大多数数据库和数据库数据流量所在的那个数据中心。

混合方案:

将上述原则应用于更复杂的同步组配置。

数据库注意事项和约束

  • SQL Database 实例 大小

    创建新的 SQL Database 实例 (https://manage.windowsazure.com) 时,如果选择“自定义创建”,则要设置最大大小,使其始终大于所部署的数据库。如果所设置的最大大小不大于部署的数据库,则同步将失败。虽然无法自动增大,但可在创建数据库后执行 ALTER DATABASE 增加该数据库的大小。当然,前提是仍必须小于 SQL Database 实例大小限制。


    Important重要提示
    SQL 数据同步(预览版)除了数据库还会存储其他元数据。计算所需空间时,请务必考虑这一点。
    由表的宽度(窄表需要的开销更多)和数据流量控制增加的开销量。

  • 数据库维度上支持的限制

     

    维度 限制

    数据库、表、架构和列名称

    每个名称 50 个字符

    同步组中的表数

    100

    同步组中的列数

    1000

表注意事项和约束

  • 选择表

    并不是数据库中所有表都需要在同步组中。有关要在同步组中包含和排除(或包含在其他同步组中)的表的选择可能会影响效率和成本。请仅将业务所需的表以及这些表所依赖的表包含在同步组中。

  • 主键

    同步组中的每个表都必须具有一个主键。SQL 数据同步(预览版)服务无法同步任何没有主键的表。

在投入到生产之前,请针对您的方案测试初始和进行中同步性能。

设置目标数据库

SQL 数据同步(预览版) 预览提供基本的数据库自动设置。

本节论述 SQL 数据同步(预览版)的设置的限制。

自动设置限制

下面是 SQL 数据同步(预览版)自动设置的限制。

  • 在目标表中将只创建选择的列。
    因此,如果某些列不是同步组的一部分,则在目标表中将不设置这些列。

  • 只为所选列创建索引。
    如果源表索引具有不属于同步组的列,则在目标表中将不设置这些索引。

  • 未设置针对 XML 类型列的索引。

  • 未设置 CHECK 约束。

  • 未设置针对源表的现有触发器。

  • 在目标数据库上未创建视图和存储过程。

建议

  • 仅将自动设置功能用于服务试用。

  • 对于生产,您应该设置数据库架构。

避免首次同步速度缓慢和资金成本高昂

本节论述同步组的首次同步,并介绍采取哪些措施可避免首次同步消耗的时间和资金成本超出必要的水平。

SQL 数据同步(预览版)的行为

创建同步组时,开始应仅在一个数据库中具有数据。如果在多个数据库中具有数据,则 SQL 数据同步(预览版)将每行都视为一个需要解决的冲突。这样使首次同步变得非常缓慢 - 根据数据库大小的不同,可能需要数日到数月。

此外,如果这些数据库在不同的数据中心内,则首次同步的资金成本将高于必要的水平,因为每行都必须在不同的数据中心之间往返穿行。

建议

如有可能,同步组中最初应仅有一个数据库含有数据。

同步计划注意事项

  • 成本

    即使目前 SQL 数据同步(预览版)服务是免费提供的,但对移入和移出 SQL Database 数据中心的数据要收取 SQL Database 费用。因此,您应该同步数据保持稳定的表或包含无需按每日计划或每周计划频繁刷新的数据的表。包含时间敏感数据或比较易失的数据的表按频率更高的计划可更好地进行同步。分析您的业务需求并相应地创建您的同步组和时间表。

    随着数据在数据中心传入和传出,也可能会产生入口和出口费用。

  • 频率

    如果您尝试同步尚未完成同步的同步组,您的尝试甚至无法开始。系统不会显示任何说明未发生同步的指示。因此,最好制定同步计划,以便有时间完成每个同步,然后再尝试其他同步。

    例如:

    如果您将同步组计划为每五分钟同步一次(T0、T0+5、T0+10...),但是该组花了六分钟才完成同步,那么您的同步将按“T0、T0+10、T0+20...”时间进行。T0+5 和 T0+15 将失败,因为同步 T0 和 T0+10 未按时完成。

进行设计以避免同步循环

在一个同步组内存在循环引用以致一个数据库中的每个更改都在该同步组中的各数据库被循环和无终止地反复复制时将导致同步循环。您想要避免同步循环,因为同步循环会降低性能并且可能显著增加您的成本。

有关同步循环和导致同步循环的设计示例以及如何重新设计以避免同步循环的详细信息,请参阅了解并避免同步循环主题。

避免过期数据库和同步组

同步组或同步组内的数据库可能会变得过期。在某一同步组的状态为“过期”后,该同步组将停止工作。在某一数据库的状态为“过期”后,数据可能会丢失。最好是避免出现这些情况,而不是不得不事后恢复。

避免过期数据库

在某一数据库已经在 45 天或更长时间中处于脱机状态时,该数据库将被设置为过期。您可以通过确保没有任何数据库在 45 天或更长时间中处于脱机状态,避免数据库上出现过期状态。有关如何从已过期状态的数据库恢复,请参阅主题数据库具有“过期”状态

避免过期同步组

在某一同步组内的任何更改在 45 天或更长时间中无法传播到该同步组的其余部分时,该同步组被设置为过期。您可以通过定期检查某一同步组的历史记录日志并且确保解决了所有冲突且更改已在整个同步组数据库中成功传播,避免在该同步组上出现过期状态。

某一同步组可能未能应用更改的原因包括:

您可以通过以下方式避免过期同步组:

有关如何从已过期状态的同步组恢复,请参阅主题同步组具有“过期”状态

避免取消设置问题

在某些情况下,向客户端代理注销某一数据库可能会导致同步失败。

应用场景:

  1. 同步组 A 是使用某一 SQL Database 实例以及与本地代理 1 关联的本地 SQL Server 数据库创建的。

  2. 向本地代理 2(该代理与任何同步组均不关联)注册了同一个本地数据库。

  3. 从本地代理 2 注销该本地数据库将为该本地数据库删除针对同步组 A 的跟踪/元表。

  4. 现在,同步组 A 操作失败并且具有以下错误 –
    “当前操作无法完成,因为没有为同步设置数据库或者您对同步配置表没有权限。”

解决方案:

  • 通过永不向多个代理注册一个数据库可完全避免这个情况。

  • 从此类情况下恢复:

    1. 从该数据库属于的各同步组中删除该数据库。

    2. 将该数据库添加回您刚删除了它的各同步组中。

    3. 部署每个受影响的同步组(设置数据库)。

处理未能传播的更改

更改未能传播的原因

更改可能会由于许多原因而无法传播。其中某些原因是:

  • 架构/数据类型不兼容。

  • 尝试在不可为 Null 列中插入 Null。

  • 违反外键约束。

更改未传播时将发生什么?

  • 同步组显示它处于警告状态。

  • 详细信息处于门户 UI 日志查看器中。

  • 如果在 45 天的时间内未解决该问题,您的数据库将过期。


    note注意
    这些更改将永远不会传播。唯一的恢复方法是重新创建您的同步组。

建议

通过门户和日志 UI 定期监视您的同步组和数据库运行状况。

修改您的同步组

不要尝试从某一同步组中删除数据库,然后未首先部署某一更改就编辑该同步组。

首先,从同步组中删除数据库。然后,部署更改并且等待取消设置完成。在完成此操作后,您可以编辑该同步组并且部署更改。

如果您尝试删除数据库,然后未首先部署某一更改就编辑同步组,则一个或其他操作将失败,并且 UI 可能会进入不一致状态。但如果发生此情况,您可以刷新 UI 以便还原到正确状态。

有关其他相关的最佳实践,请参阅同步组更新的最佳实践

导航

SQL 数据同步(预览版) 是 SQL Database 的一项功能。从 Windows Azure 管理门户中可执行创建、部署和修改同步组所需的所有任务。

 

如何创建同步组

从 Windows Azure 管理门户创建同步组需执行六个步骤。访问以下链接可以找到有关每个步骤的详细信息。

  1. 登录到 Windows Azure SQL Database 管理门户
    SQL 数据同步(预览版)仅在您创建了同步组后才以选项卡的形式出现在 SQL Database 下。

  2. 如何安装 SQL 数据同步(预览版)客户端代理

  3. 如何向客户端代理注册 SQL Server 数据库

  4. 如何创建同步组 (SDS)

  5. 如何定义同步数据 (SDS)

  6. 如何配置同步组 (SDS)

如何修改同步组

您可以通过添加/删除某一同步组中的表或列,或者通过更改某个列的宽度或数据类型,对该同步组的架构进行修改。访问以下链接可以找到有关的详细信息。

另请参见

社区附加资源

添加
显示:
© 2014 Microsoft