如何配置对等事务复制 (SQL Server Management Studio)

本主题介绍如何创建三节点对等事务性复制拓扑,然后向现有拓扑中添加节点。下列步骤是一个概述,本主题中对每个步骤都进行了详细说明:

  • 初始拓扑包含 Server AServer BServer C。在创建拓扑时,假设任一对等数据库中均没有发生活动。创建拓扑:
    1. Server AServer BServer C 上配置分发。
      可以使用本地分发服务器,也可以使用远程分发服务器。如果使用远程分发服务器,建议不要对所有节点使用同一个远程分发服务器,因为这可能导致单点故障。有关分发服务器的详细信息,请参阅配置分发
    2. 使用新建发布向导在 Server A 上创建发布。
    3. 在**“发布属性 - <发布>”**对话框中为对等复制启用发布。
    4. 手动或通过将 Server A 上的数据库还原到 Server BServer C 来初始化 Server BServer C 上的架构和数据。所有节点上的架构必须相同。
    5. 使用配置对等拓扑向导将 Server BServer C 添加到拓扑中。添加服务器:在每台服务器上都创建一个发布,并创建对拓扑中其他服务器上的发布的订阅。
      如果发布的表中有标识列,则必须在 Server BServer C 上重设表的标识范围种子。
  • 创建拓扑后,添加 Server D。在向现有拓扑中添加节点时,假设有活动发生以及系统停机时间必须尽量缩短。向现有拓扑中添加节点:
    1. Server D 上配置分发。
    2. 通过将 Server A 上的数据库还原到 Server D 来初始化 Server D 上的架构和数据。
    3. 使用配置对等拓扑向导将 Server D 添加到拓扑中。此时,添加 Server D:在 Server D 上创建发布,并在 Server AServer D 之间创建订阅。
      如果发布的表中有标识列,则必须在 Server D 上重设表的标识范围种子。
      此时,Server D 可以向所有服务器发送更改并从所有服务器接收更改,但所有更改的传送必须经过与 Server BServer C 连接的 Server A。如果要在 Server D 和其他节点之间添加订阅,请转到步骤 4。虽然可以不添加订阅,但最好添加订阅,因为与只有 Server AServer D 之间的一个单一连接相比,这样就具有更强的容错能力。
    4. 停止拓扑,这涉及到停止所有更改和同步所有服务器。
    5. 使用配置对等拓扑向导在 Server D 和其他节点之间添加订阅。

创建对等复制拓扑

以下一系列过程说明如何创建三节点对等拓扑。

ms152536.note(zh-cn,SQL.90).gif注意:
请确保在每个节点上都运行 Microsoft SQL Server 代理,以及在配置拓扑后运行日志读取器代理和分发代理。有关 SQL Server 代理的信息,请参阅启动 SQL Server 代理;有关启动和停止代理的信息,请参阅如何启动和停止复制代理 (SQL Server Management Studio)

为每个节点配置分发

  1. 在 Microsoft SQL Server Management Studio 中连接到 Server A(必须对 Server BServer C 重复此配置过程)。

  2. 展开服务器节点,右键单击**“复制”文件夹,再单击“配置分发”**。

  3. 在配置分发向导的**“分发服务器”**页上,选择分发服务器。

    若要使用本地分发服务器,请选择**“‘<服务器名称>'将充当自己的分发服务器;SQL Server 将创建分发数据库和日志”。若要使用远程分发服务器,请选择“使用以下服务器作为分发服务器”**,再选择一个服务器。该服务器必须已配置为分发服务器,并且启用发布服务器使用此分发服务器。有关详细信息,请参阅如何在分发服务器上启用远程发布服务器 (SQL Server Management Studio)

    如果选择远程分发服务器,必须在**“管理密码”**页上输入 Server A 连接到该分发服务器所用密码。此密码必须是在远程分发服务器上将 Server A 启用为发布服务器时指定的密码。

  4. 在**“快照文件夹”**页上,指定快照文件夹。

    快照文件夹只是指定共享的目录。向此文件夹中执行读写操作的代理必须对其具有足够的访问权限。此目录存储第一个节点上的复制所需的对象;其他节点上的对等复制并不使用此目录,但配置分发服务器仍需要它。有关正确保护文件夹的详细信息,请参阅保护快照文件夹的安全

  5. 在**“分发数据库”**页上,指定分发数据库的名称。

    分发数据库存储事务、元数据和历史数据。

  6. 在**“发布服务器”**页上,根据需要启用其他发布服务器将 Server A 用作远程分发服务器。

    如果启用其他发布服务器将 Server A 用作远程分发服务器,则必须在**“分发服务器密码”**页上输入发布服务器连接到分发服务器所用的密码。

  7. 在“向导操作”页上,根据需要编写配置设置的脚本。有关详细信息,请参阅编写复制脚本

在第一个节点上创建发布

  1. 在 SQL Server Management Studio 中连接到 Server A,然后展开服务器节点。

  2. 展开**“复制”文件夹,再右键单击“本地发布”**文件夹。

  3. 单击**“新建发布”**。

  4. 在新建发布向导的**“发布数据库”**页上,选择要发布的数据库。

  5. 在**“发布类型”页上,选择“事务性发布”**。

  6. 在**“项目”**页上,选择要发布的数据库对象。

    单击**“项目属性”**,查看并修改项目属性。下列属性不能更改:

    • 目标对象名称
    • 目标对象所有者
    • 不能将**“<ACTION> 传递格式”选项(其中 ACTION 为 INSERT、UPDATE 或 DELETE)设置为“<ACTION> 语句”“没有列列表的 <ACTION> 语句”**。
  7. 不能在**“筛选表行”**页上定义筛选器;不支持筛选对等发布。

  8. 在**“快照代理”页上,清除“立即创建快照”**。

  9. 在**“代理安全性”**页上,指定快照代理和日志读取器代理的凭据。

    有关每个代理所需权限的详细信息,请参阅复制代理安全性模式复制安全最佳实践

  10. 在**“向导操作”**页上,根据需要,可以选择为发布编写脚本。有关详细信息,请参阅编写复制脚本

  11. 在**“完成该向导”**页中,为发布指定名称。发布名称在整个拓扑上必须一致,这样配置对等拓扑向导在每个节点上创建发布时就可以使用此名称。

为对等复制启用发布

  1. 展开 Server A 上的**“复制”文件夹,然后展开“本地发布”**文件夹。

  2. 右键单击创建的发布,再单击**“属性”**。

  3. 在**“发布属性 - <发布>”对话框中的“订阅选项”页上,为“允许对等订阅”**属性选择 True 值。

  4. 单击“确定”。

初始化每个节点上的架构和数据

  • 可按以下方法之一初始化对等方:

    • 手动。使用 Integration Services (SSIS)、脚本或其他方法将 Server A 上的架构和数据复制到 Server BServer C。在将 Server BServer C 配置为对等方之前,请确保这些服务器上的架构和数据与 Server A 上的架构和数据相同。
    • 通过将 Server A 上的发布数据库备份还原到 Server BServer C。有关备份和还原数据库的详细信息,请参阅在 SQL Server 中备份和还原数据库
      ms152536.note(zh-cn,SQL.90).gif重要提示:
      还原数据库时,请勿指定 KEEP_REPLICATION 选项(对于 Transact-SQL)或“保留复制设置”选项(对于 SQL Server Management Studio)。运行配置对等拓扑向导时,复制会相应配置数据库。
      备份包含完整的数据库,因此每个对等数据库初始化后都包含发布数据库的完整副本。备份包括:未指定为发布项目的表和所有数据,即使已经对某个表指定了行筛选器或列筛选器。 应由管理员或应用程序在还原备份后删除任何不需要的对象或数据。在后续同步中,只复制应用于指定为项目的表的数据更改。

在初始化配置过程中向拓扑中添加节点

  1. 右键单击在 Server A 上创建的发布,再单击**“配置对等拓扑”。可能需要刷新发布节点才能看到“配置对等拓扑”**选项。

  2. 在配置对等拓扑向导的**“发布”**页上,将选中在 Server A 上所创建的发布。

  3. 在**“对等方”**页上,添加 Server B,然后对 Server C 重复此过程:

    1. 单击**“添加 SQL Server”**。
    2. 连接到**“连接到服务器”对话框中指定的 Server BServer B 即显示在“对等服务器实例”**列中。
    3. 从**“对等数据库”**菜单中选择 Server B 上的数据库。
    ms152536.note(zh-cn,SQL.90).gif注意:
    Server A 也将显示,但它已进行过配置,因此不要选中 Server A 的复选框。
  4. 在**“日志读取器代理安全性”**页上,为每个节点上的日志读取器代理指定凭据。

    有关日志读取器代理所需权限的详细信息,请参阅复制代理安全性模式复制安全最佳实践

  5. 在**“分发代理安全性”**页上,为分发代理(为每个节点的订阅提供服务)指定凭据。

    配置对等拓扑向导创建推送订阅(分发代理在分发服务器上运行),每个订阅都有一个独立的代理。在三节点拓扑中,每个节点都有其他两个节点的订阅,因此每台分发服务器上都会运行两个分发代理。

    有关分发代理所需权限的详细信息,请参阅复制代理安全性模式复制安全最佳实践

  6. 在**“新对等方初始化”页上,选择“我手动创建了对等数据库或还原了原始发布数据库的备份,该发布数据库自这次备份以来不曾发生更改”**。

  7. 完成向导。在**“正在生成对等拓扑”**页上,发出警告,指示已有 Server A 的日志读取器。这是信息性警告,无需执行任何操作。

  8. 如果发布的表中有标识列,则在还原后,为 Server A 上的表指定的标识范围也可用于 Server BServer C 上的表。必须使用 DBCC CHECKIDENT 在 Server BServer C 上重播表,以确保各自使用不同的标识范围。

    有关管理标识范围的详细信息,请参阅复制标识列中的“指定手动标识范围管理的范围”部分。

向现有拓扑中添加节点

以下一系列“如何”过程分阶段说明如何向现有拓扑中添加新节点:

  • 第一阶段包含前三个“如何”过程,涉及通过在 Server AServer D 之间创建订阅将 Server D 部分连接到拓扑。这样,允许继续在 Server AServer BServer C 上进行更改。在 Server AServer D 之间创建订阅后,可立即开始在 Server D 上进行更改。
  • 第二阶段包含后两个“如何”过程,涉及通过在 Server BServer D 之间以及在 Server CServer D 之间创建订阅,将 Server D 完全连接到拓扑。对于这一阶段,必须停止系统。
    虽然可以不执行第二阶段,但最好执行这一阶段,因为与只有 Server AServer D 之间的一个单一连接相比,这样就具有更强的容错能力。
ms152536.note(zh-cn,SQL.90).gif注意:
请确保在每个节点上都运行 SQL Server 代理,以及配置拓扑后运行日志读取器代理和分发代理。有关启动 SQL Server 代理的信息,请参阅启动 SQL Server 代理;有关启动复制代理的信息,请参阅如何启动和停止复制代理 (SQL Server Management Studio)

为新节点配置分发

  • 请参阅前文所述过程。

初始化新节点

  • Server D 上还原 Server A 上最新的发布数据库备份。也可使用 Server BServer C 上的备份,但必须在添加 Server D 时,在配置对等拓扑向导的**“发布”**页上选择该服务器和数据库。

向拓扑中添加新节点(在 Server A 和 Server D 之间创建订阅)

  1. 右键单击在 Server A 上创建的发布,再单击**“配置对等拓扑”**。

  2. 在配置对等拓扑向导的**“发布”**页上,将选中在 Server A 上所创建的发布。

  3. 在**“对等方”**页上,添加 Server D

    1. 单击**“添加 SQL Server”**。
    2. 在**“连接到服务器”对话框中,连接到 Server DServer D 即显示在“对等服务器实例”**列中。
    3. 从**“对等数据库”**菜单中选择 Server D 上的数据库。
    ms152536.note(zh-cn,SQL.90).gif注意:
    Server A 也将显示,但它已进行过配置,因此不要选中 Server A 的复选框。
  4. 在**“日志读取器代理安全性”**页上,为 Server D 上的日志读取器代理指定凭据。

  5. 在**“分发代理安全性”**页上,为 Server AServer D 上的分发代理指定凭据。

  6. 在**“新对等方初始化”页上,选择“我还原了原始发布数据库的备份,该发布数据库在这次备份之后已发生更改”**。

    如果选中此选项,则 Server A 上的备份中未包括的所有更改都会传递到 Server D 上还原的数据库中。为对等复制启用发布时,allow_initialize_from_backup 发布属性设置为 True。复制立即开始跟踪 Server A 上发布数据库中的更改,这样在还原后,其他对等方就可为最新状态。

  7. 单击**“浏览”**按钮定位到所用备份,复制将从备份中读取日志序列号 (LSN)。Server A 上发布数据库中所有 LSN 较高的更改都将传递到 Server D 上。

  8. 完成向导。

  9. 对于任何包括标识范围的已发布表,为 Server A 上每个表指定的标识范围也用于 Server D。如果不停止系统并完全连接所有节点,请按以下过程为 Server D 上的每个表指定适当的范围。如果完全连接所有节点,可以在停止系统后指定范围:

    1. Server D 上执行 sp_requestpeerresponse (Transact-SQL),并检索输出参数 @request_id
    2. 默认情况下,分发代理设置为连续运行,因此令牌将自动发送到所有节点。如果分发代理未以连续模式运行,请运行该代理。有关详细信息,请参阅Programming Replication Agent Executables如何启动和停止复制代理 (SQL Server Management Studio)
    3. 执行 sp_helppeerresponses (Transact-SQL),提供在步骤 b 中检索到的 @request_id 值。请稍候,直到所有节点都指示已接收到对等请求为止。
    4. 使用 DBCC CHECKIDENT 在 Server D 上对每个表重设种子,以确保使用适当的范围。

停止拓扑

  1. 停止对等拓扑中所有已发布表上的所有活动。

  2. Server AServer BServer CServer D 上的数据库执行 sp_requestpeerresponse (Transact-SQL),并检索输出参数 @request_id

  3. 默认情况下,分发代理设置为连续运行,因此令牌将自动发送到所有节点。如果分发代理未以连续模式运行,请运行该代理。有关详细信息,请参阅Programming Replication Agent Executables如何启动和停止复制代理 (SQL Server Management Studio)

  4. 执行 sp_helppeerresponses (Transact-SQL),提供在步骤 2 中检索到的 @request_id 值。一直等到所有节点都指示已收到对等方的请求。

  5. 指定新的标识范围(如果需要)。现在可以通过添加其余订阅来完全连接拓扑了。

为新节点创建其他订阅

  1. 右键单击在 Server A 上创建的发布,再单击**“配置对等拓扑”**。

  2. 在配置对等拓扑向导的**“发布”**页上,将选中在 Server A 上所创建的发布。

  3. 在**“对等方”**页上,添加 Server B,然后对 Server CServer D 重复此过程:

    1. 单击**“添加 SQL Server”**。
    2. 连接到**“连接到服务器”对话框中指定的 Server BServer B 即显示在“对等服务器实例”**列中。
    3. 从**“对等数据库”**菜单中选择 Server B 上的数据库。
    ms152536.note(zh-cn,SQL.90).gif注意:
    Server A 也将显示,但它已进行过配置,因此不要选中 Server A 的复选框。
  4. 在**“日志读取器代理安全性”**页上,为 Server BServer CServer D 上的日志读取器代理指定凭据。

  5. 在**“分发代理安全性”**页上,为 Server AServer BServer CServer D 上的分发代理指定凭据。

  6. 在**“新对等方初始化”页上,选择“我手动创建了对等数据库或还原了原始发布数据库的备份,该发布数据库自这次备份以来不曾发生更改”**。所有节点均已有数据;指定此选项可确保在每个节点之间建立起正确的订阅关系。

  7. 完成向导。

请参阅

概念

对等事务复制
复制代理概述

帮助和信息

获取 SQL Server 2005 帮助