【问题标题】:SQL Server 2008R2 Transactional Replication - Move SubscriberDB - Push SubscriptionSQL Server 2008R2 事务复制 - 移动订阅者数据库 - 推送订阅
【发布时间】:2012-06-03 18:20:31
【问题描述】:

SQL Server 2008R2 事务复制 - 移动 SubscriberDB - 推送订阅

我需要在系统中断之外将订阅者数据库移动到新服务器,即我无法阻止新事务加载到发布者数据库中。

到目前为止,我已尝试停止分发代理并让所有未复制的命令复制到 Server1 上的订户数据库。然后将订阅者数据库备份并恢复到 Server2。然后,我创建了一个从 Server2 到现有出版物的新订阅。

这可行,但只有从该点开始创建的事务才会复制到 Server2 订阅者数据库。我还需要在分销商数据库中建立的所有旧交易,这些交易注定只能转到 Server1。

是否有复制命令可用于将分发器中现有事务的目标更新为新的subscriber.subscriber_DB?

有 1 个出版物包含多篇文章。该发布目前仅由 Server1 上的一个数据库订阅。

【问题讨论】:

    标签: sql-server sql-server-2008-r2 replication transactional-replication subscriber


    【解决方案1】:

    你工作太辛苦了。在新服务器上创建订阅,就像您根本没有现有订阅一样。有很多方法可以做到这一点;选择你最喜欢的。我在您对另一个答案的回复中看到快照是不可行的。我使用“从备份初始化”选项取得了很大的成功(这里,“备份”是指发布者的备份)。一旦订阅者在初始化后同步,您就完成了。您现在可以“迁移”到新服务器了。

    【讨论】:

    • 所以为了澄清,我可以通过 Publication1 保持当前事务复制到订阅服务器 Server1。将最近的完整备份备份并恢复到订阅服务器 Server2。然后在发布者处创建一个新订阅,但选择“从备份初始化”。然后,SQL Server 会将自备份后创建的所有新事务同步到 Server2,同时仍将新事务复制到 server1,直到所有三个位置的所有内容都匹配?听起来不错!我看看明天能不能让它工作。
    • 这就是它的要点。只需确保备份和添加订阅之间的时间在您的分发保留范围内。另外,请确保在发布上设置了“允许从备份初始化”。除此之外,你应该很高兴。
    • 我支持这个选项。以前从未使用过它,所以没有意识到它会自动同步,因为备份是有道理的。可能是您的最佳选择。
    • @Zhenny:一个小小的说明。 sp_addsubscription 中的所有 sync_type 选项相当于“我从哪个 LSN 开始交付 xact?”。 “自动”=“在创建快照时使用 pub 的 LSN”,“从备份初始化”=“使用备份的 LSN”,“repl'n 仅支持”=“使用 pub 的当前 LSN”,“从 LSN 初始化”=“.. .".
    【解决方案2】:

    由于分发代理特定于每个订阅服务器,因此您不能真正让新订阅者接管现有订阅者停止的地方。唯一可行的方法是备份/恢复到 Server2,暂时停止发布者上的事务,将日志备份/恢复到 Server2,创建“仅支持复制”的订阅,然后重新启用事务。

    您不能只为新订阅者添加对同一发布的订阅并启动快照代理吗?这将独立同步 Server2 而 Server1 继续保持同步。然后,您应该能够无缝切换到 Server2 并删除对 Server1 的订阅。

    不过有一点警告。我会检查发布数据库的 syspublications 表(或运行 sp_helppublications)中的 sync_method,以确保快照不会锁定发布者中的表(默认情况下,对于 SQL Server 2005+,这应该不是问题)。否则,我刚才的建议将导致发布者被阻塞,直到快照完成。

    此外,如果您使用默认设置通过 GUI 设置复制,这是了解如何一次创建一个快照的一个很好的参考。如果您有大量数据要复制(千兆字节而不是兆字节),这对于在更长的时间内分发快照以减少发布服务器负载很有用。 http://www.replicationanswers.com/TransactionalOptimisation.asp

    【讨论】:

    • 非常感谢您的反馈。由于每篇文章的大小,我应该添加我们不使用快照,而是恢复备份并仅按照建议创建具有复制支持的订阅。如果我们使用快照我会选择你的选择二。您的第一个选择是我想要实现的目标,但不会停止发布商的交易。您可能已经回答了我的问题,但指出一个 dist 代理特定于一个订阅服务器(当其他人指出时才有意义)。我将根据其他回复将您的问题标记为明天的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多