如何配置对等事务复制 (SQL Server Management Studio)
本主题介绍如何创建三节点对等事务性复制拓扑,然后向现有拓扑中添加节点。下列步骤是一个概述,本主题中对每个步骤都进行了详细说明:
- 初始拓扑包含 Server A、Server B 和 Server C。在创建拓扑时,假设任一对等数据库中均没有发生活动。创建拓扑:
- 在 Server A、Server B 和 Server C 上配置分发。
可以使用本地分发服务器,也可以使用远程分发服务器。如果使用远程分发服务器,建议不要对所有节点使用同一个远程分发服务器,因为这可能导致单点故障。有关分发服务器的详细信息,请参阅配置分发。 - 使用新建发布向导在 Server A 上创建发布。
- 在**“发布属性 - <发布>”**对话框中为对等复制启用发布。
- 手动或通过将 Server A 上的数据库还原到 Server B 和 Server C 来初始化 Server B 和 Server C 上的架构和数据。所有节点上的架构必须相同。
- 使用配置对等拓扑向导将 Server B 和 Server C 添加到拓扑中。添加服务器:在每台服务器上都创建一个发布,并创建对拓扑中其他服务器上的发布的订阅。
如果发布的表中有标识列,则必须在 Server B 和 Server C 上重设表的标识范围种子。
- 在 Server A、Server B 和 Server C 上配置分发。
- 创建拓扑后,添加 Server D。在向现有拓扑中添加节点时,假设有活动发生以及系统停机时间必须尽量缩短。向现有拓扑中添加节点:
- 在 Server D 上配置分发。
- 通过将 Server A 上的数据库还原到 Server D 来初始化 Server D 上的架构和数据。
- 使用配置对等拓扑向导将 Server D 添加到拓扑中。此时,添加 Server D:在 Server D 上创建发布,并在 Server A 和 Server D 之间创建订阅。
如果发布的表中有标识列,则必须在 Server D 上重设表的标识范围种子。
此时,Server D 可以向所有服务器发送更改并从所有服务器接收更改,但所有更改的传送必须经过与 Server B 和 Server C 连接的 Server A。如果要在 Server D 和其他节点之间添加订阅,请转到步骤 4。虽然可以不添加订阅,但最好添加订阅,因为与只有 Server A 和 Server D 之间的一个单一连接相比,这样就具有更强的容错能力。 - 停止拓扑,这涉及到停止所有更改和同步所有服务器。
- 使用配置对等拓扑向导在 Server D 和其他节点之间添加订阅。
创建对等复制拓扑
以下一系列过程说明如何创建三节点对等拓扑。
注意: |
---|
请确保在每个节点上都运行 Microsoft SQL Server 代理,以及在配置拓扑后运行日志读取器代理和分发代理。有关 SQL Server 代理的信息,请参阅启动 SQL Server 代理;有关启动和停止代理的信息,请参阅如何启动和停止复制代理 (SQL Server Management Studio)。 |
为每个节点配置分发
在 Microsoft SQL Server Management Studio 中连接到 Server A(必须对 Server B 和 Server C 重复此配置过程)。
展开服务器节点,右键单击**“复制”文件夹,再单击“配置分发”**。
在配置分发向导的**“分发服务器”**页上,选择分发服务器。
若要使用本地分发服务器,请选择**“‘<服务器名称>'将充当自己的分发服务器;SQL Server 将创建分发数据库和日志”。若要使用远程分发服务器,请选择“使用以下服务器作为分发服务器”**,再选择一个服务器。该服务器必须已配置为分发服务器,并且启用发布服务器使用此分发服务器。有关详细信息,请参阅如何在分发服务器上启用远程发布服务器 (SQL Server Management Studio)。
如果选择远程分发服务器,必须在**“管理密码”**页上输入 Server A 连接到该分发服务器所用密码。此密码必须是在远程分发服务器上将 Server A 启用为发布服务器时指定的密码。
在**“快照文件夹”**页上,指定快照文件夹。
快照文件夹只是指定共享的目录。向此文件夹中执行读写操作的代理必须对其具有足够的访问权限。此目录存储第一个节点上的复制所需的对象;其他节点上的对等复制并不使用此目录,但配置分发服务器仍需要它。有关正确保护文件夹的详细信息,请参阅保护快照文件夹的安全。
在**“分发数据库”**页上,指定分发数据库的名称。
分发数据库存储事务、元数据和历史数据。
在**“发布服务器”**页上,根据需要启用其他发布服务器将 Server A 用作远程分发服务器。
如果启用其他发布服务器将 Server A 用作远程分发服务器,则必须在**“分发服务器密码”**页上输入发布服务器连接到分发服务器所用的密码。
在“向导操作”页上,根据需要编写配置设置的脚本。有关详细信息,请参阅编写复制脚本。
在第一个节点上创建发布
在 SQL Server Management Studio 中连接到 Server A,然后展开服务器节点。
展开**“复制”文件夹,再右键单击“本地发布”**文件夹。
单击**“新建发布”**。
在新建发布向导的**“发布数据库”**页上,选择要发布的数据库。
在**“发布类型”页上,选择“事务性发布”**。
在**“项目”**页上,选择要发布的数据库对象。
单击**“项目属性”**,查看并修改项目属性。下列属性不能更改:
- 目标对象名称
- 目标对象所有者
- 不能将**“<ACTION> 传递格式”选项(其中 ACTION 为 INSERT、UPDATE 或 DELETE)设置为“<ACTION> 语句”或“没有列列表的 <ACTION> 语句”**。
不能在**“筛选表行”**页上定义筛选器;不支持筛选对等发布。
在**“快照代理”页上,清除“立即创建快照”**。
在**“代理安全性”**页上,指定快照代理和日志读取器代理的凭据。
在**“向导操作”**页上,根据需要,可以选择为发布编写脚本。有关详细信息,请参阅编写复制脚本。
在**“完成该向导”**页中,为发布指定名称。发布名称在整个拓扑上必须一致,这样配置对等拓扑向导在每个节点上创建发布时就可以使用此名称。
为对等复制启用发布
展开 Server A 上的**“复制”文件夹,然后展开“本地发布”**文件夹。
右键单击创建的发布,再单击**“属性”**。
在**“发布属性 - <发布>”对话框中的“订阅选项”页上,为“允许对等订阅”**属性选择 True 值。
单击“确定”。
初始化每个节点上的架构和数据
可按以下方法之一初始化对等方:
- 手动。使用 Integration Services (SSIS)、脚本或其他方法将 Server A 上的架构和数据复制到 Server B 和 Server C。在将 Server B 和 Server C 配置为对等方之前,请确保这些服务器上的架构和数据与 Server A 上的架构和数据相同。
- 通过将 Server A 上的发布数据库备份还原到 Server B 和 Server C。有关备份和还原数据库的详细信息,请参阅在 SQL Server 中备份和还原数据库。
重要提示: 还原数据库时,请勿指定 KEEP_REPLICATION 选项(对于 Transact-SQL)或“保留复制设置”选项(对于 SQL Server Management Studio)。运行配置对等拓扑向导时,复制会相应配置数据库。
在初始化配置过程中向拓扑中添加节点
右键单击在 Server A 上创建的发布,再单击**“配置对等拓扑”。可能需要刷新发布节点才能看到“配置对等拓扑”**选项。
在配置对等拓扑向导的**“发布”**页上,将选中在 Server A 上所创建的发布。
在**“对等方”**页上,添加 Server B,然后对 Server C 重复此过程:
- 单击**“添加 SQL Server”**。
- 连接到**“连接到服务器”对话框中指定的 Server B。Server B 即显示在“对等服务器实例”**列中。
- 从**“对等数据库”**菜单中选择 Server B 上的数据库。
注意: Server A 也将显示,但它已进行过配置,因此不要选中 Server A 的复选框。 在**“日志读取器代理安全性”**页上,为每个节点上的日志读取器代理指定凭据。
在**“分发代理安全性”**页上,为分发代理(为每个节点的订阅提供服务)指定凭据。
配置对等拓扑向导创建推送订阅(分发代理在分发服务器上运行),每个订阅都有一个独立的代理。在三节点拓扑中,每个节点都有其他两个节点的订阅,因此每台分发服务器上都会运行两个分发代理。
在**“新对等方初始化”页上,选择“我手动创建了对等数据库或还原了原始发布数据库的备份,该发布数据库自这次备份以来不曾发生更改”**。
完成向导。在**“正在生成对等拓扑”**页上,发出警告,指示已有 Server A 的日志读取器。这是信息性警告,无需执行任何操作。
如果发布的表中有标识列,则在还原后,为 Server A 上的表指定的标识范围也可用于 Server B 和 Server C 上的表。必须使用 DBCC CHECKIDENT 在 Server B 和 Server C 上重播表,以确保各自使用不同的标识范围。
有关管理标识范围的详细信息,请参阅复制标识列中的“指定手动标识范围管理的范围”部分。
向现有拓扑中添加节点
以下一系列“如何”过程分阶段说明如何向现有拓扑中添加新节点:
- 第一阶段包含前三个“如何”过程,涉及通过在 Server A 和 Server D 之间创建订阅将 Server D 部分连接到拓扑。这样,允许继续在 Server A、Server B 和 Server C 上进行更改。在 Server A 和 Server D 之间创建订阅后,可立即开始在 Server D 上进行更改。
- 第二阶段包含后两个“如何”过程,涉及通过在 Server B 和 Server D 之间以及在 Server C 和 Server D 之间创建订阅,将 Server D 完全连接到拓扑。对于这一阶段,必须停止系统。
虽然可以不执行第二阶段,但最好执行这一阶段,因为与只有 Server A 和 Server D 之间的一个单一连接相比,这样就具有更强的容错能力。
注意: |
---|
请确保在每个节点上都运行 SQL Server 代理,以及配置拓扑后运行日志读取器代理和分发代理。有关启动 SQL Server 代理的信息,请参阅启动 SQL Server 代理;有关启动复制代理的信息,请参阅如何启动和停止复制代理 (SQL Server Management Studio)。 |
为新节点配置分发
- 请参阅前文所述过程。
初始化新节点
- 在 Server D 上还原 Server A 上最新的发布数据库备份。也可使用 Server B 或 Server C 上的备份,但必须在添加 Server D 时,在配置对等拓扑向导的**“发布”**页上选择该服务器和数据库。
向拓扑中添加新节点(在 Server A 和 Server D 之间创建订阅)
右键单击在 Server A 上创建的发布,再单击**“配置对等拓扑”**。
在配置对等拓扑向导的**“发布”**页上,将选中在 Server A 上所创建的发布。
在**“对等方”**页上,添加 Server D:
- 单击**“添加 SQL Server”**。
- 在**“连接到服务器”对话框中,连接到 Server D。Server D 即显示在“对等服务器实例”**列中。
- 从**“对等数据库”**菜单中选择 Server D 上的数据库。
注意: Server A 也将显示,但它已进行过配置,因此不要选中 Server A 的复选框。 在**“日志读取器代理安全性”**页上,为 Server D 上的日志读取器代理指定凭据。
在**“分发代理安全性”**页上,为 Server A 和 Server D 上的分发代理指定凭据。
在**“新对等方初始化”页上,选择“我还原了原始发布数据库的备份,该发布数据库在这次备份之后已发生更改”**。
如果选中此选项,则 Server A 上的备份中未包括的所有更改都会传递到 Server D 上还原的数据库中。为对等复制启用发布时,allow_initialize_from_backup 发布属性设置为 True。复制立即开始跟踪 Server A 上发布数据库中的更改,这样在还原后,其他对等方就可为最新状态。
单击**“浏览”**按钮定位到所用备份,复制将从备份中读取日志序列号 (LSN)。Server A 上发布数据库中所有 LSN 较高的更改都将传递到 Server D 上。
完成向导。
对于任何包括标识范围的已发布表,为 Server A 上每个表指定的标识范围也用于 Server D。如果不停止系统并完全连接所有节点,请按以下过程为 Server D 上的每个表指定适当的范围。如果完全连接所有节点,可以在停止系统后指定范围:
- 在 Server D 上执行 sp_requestpeerresponse (Transact-SQL),并检索输出参数 @request_id。
- 默认情况下,分发代理设置为连续运行,因此令牌将自动发送到所有节点。如果分发代理未以连续模式运行,请运行该代理。有关详细信息,请参阅Programming Replication Agent Executables 或如何启动和停止复制代理 (SQL Server Management Studio)。
- 执行 sp_helppeerresponses (Transact-SQL),提供在步骤 b 中检索到的 @request_id 值。请稍候,直到所有节点都指示已接收到对等请求为止。
- 使用 DBCC CHECKIDENT 在 Server D 上对每个表重设种子,以确保使用适当的范围。
停止拓扑
停止对等拓扑中所有已发布表上的所有活动。
对 Server A、Server B、Server C 和 Server D 上的数据库执行 sp_requestpeerresponse (Transact-SQL),并检索输出参数 @request_id。
默认情况下,分发代理设置为连续运行,因此令牌将自动发送到所有节点。如果分发代理未以连续模式运行,请运行该代理。有关详细信息,请参阅Programming Replication Agent Executables 或如何启动和停止复制代理 (SQL Server Management Studio)。
执行 sp_helppeerresponses (Transact-SQL),提供在步骤 2 中检索到的 @request_id 值。一直等到所有节点都指示已收到对等方的请求。
指定新的标识范围(如果需要)。现在可以通过添加其余订阅来完全连接拓扑了。
为新节点创建其他订阅
右键单击在 Server A 上创建的发布,再单击**“配置对等拓扑”**。
在配置对等拓扑向导的**“发布”**页上,将选中在 Server A 上所创建的发布。
在**“对等方”**页上,添加 Server B,然后对 Server C 和 Server D 重复此过程:
- 单击**“添加 SQL Server”**。
- 连接到**“连接到服务器”对话框中指定的 Server B。Server B 即显示在“对等服务器实例”**列中。
- 从**“对等数据库”**菜单中选择 Server B 上的数据库。
注意: Server A 也将显示,但它已进行过配置,因此不要选中 Server A 的复选框。 在**“日志读取器代理安全性”**页上,为 Server B、Server C 和 Server D 上的日志读取器代理指定凭据。
在**“分发代理安全性”**页上,为 Server A、Server B、Server C 和 Server D 上的分发代理指定凭据。
在**“新对等方初始化”页上,选择“我手动创建了对等数据库或还原了原始发布数据库的备份,该发布数据库自这次备份以来不曾发生更改”**。所有节点均已有数据;指定此选项可确保在每个节点之间建立起正确的订阅关系。
完成向导。