我有一个 3 节点 SQL Server Always On 可用性组。2 个节点在同一个 LAN 上,第三个节点在具有高延迟的远程站点上。
我将向 AG 添加一个巨大的数据库(10TB),所以我希望能够在第一阶段将它添加到 LAN 上的 2 个副本中,几天后,在第三个(远程)添加它) 现场手动复制后的副本。
这是受支持的方案吗?如果是这样...推荐的方法是什么?
不幸的是,将数据库同时添加到所有节点不是一种选择。
我有一个 3 节点 SQL Server Always On 可用性组。2 个节点在同一个 LAN 上,第三个节点在具有高延迟的远程站点上。
我将向 AG 添加一个巨大的数据库(10TB),所以我希望能够在第一阶段将它添加到 LAN 上的 2 个副本中,几天后,在第三个(远程)添加它) 现场手动复制后的副本。
这是受支持的方案吗?如果是这样...推荐的方法是什么?
不幸的是,将数据库同时添加到所有节点不是一种选择。
我建议您将数据库还原/附加到 SQL 服务器上的主节点。从那里您可以将其添加到 AG 但不能复制。最终,要在第三个(远程)节点上获取它 - 您可能必须在已将其复制到远程节点后破坏 AG 并重新添加数据库(如果您允许停机)。这将允许它同步。
所以这种方法意味着你将有3 个阶段:
如果不清楚,请告诉我更多信息,以便我为您提供帮助(例如 OS/SQL 版本)。
是的,您可以这样做,其中一种方法是创建新的可用性组,这样现有的 AG 数据库就不会被中断,可以在不向其中添加数据库和其他副本的情况下创建可用性组。
在您的情况下,您可以遵循相同的方法,以下是您可能想要遵循的步骤:
总结步骤:
准备好后,可以对第三个副本重复步骤 3、4、5 和 6。
详细步骤:
要创建一个空的可用性组,请通过SSMS 选择新建可用性组
选项 → Always On 高可用性 → 可用性组(右键单击)
创建空可用性组后,您可以相应地应用以下命令(主要和次要),可以使用 SSMS (GUI) 完成相同的步骤。
在 PRIMARY 副本上
在 SECONDARY 副本上
一旦决定添加第 3 个副本,您可以使用以下命令,使用带有 NORECOVERY 选项的最近备份在第 3 个副本恢复所需的数据库。
在 PRIMARY 上用于第三个副本
3号副本
虽然可以使用 2 个副本创建 AG,而 WSFC 有 3 个副本(节点),但 AG 的健康状况和它的侦听器由 WSFC 的 3 个节点决定,除非 WSFC 中没有从第 3 个节点计算的仲裁投票。更多细节..
如果我理解这个问题,是的,这是一个受支持的场景,它可以很容易地完成,而不需要像其他答案那样多的工作。您不必从 AG 中删除远程节点或创建新 AG 即可执行此操作。高级步骤是通过 SSMS 向导将数据库添加到 AG,最后点击按钮创建脚本,然后取消向导。使用在本地辅助节点上同步和加入数据库的脚本部分。然后,当您准备好进行远程辅助时,将数据库还原到它,使其与最新的日志备份同步,然后将其加入:
ALTER DATABASE <database_name> SET HADR AVAILABILITY GROUP = <AG_name>
您甚至可以保存与远程服务器相关的 SSMS 生成的脚本部分来执行此操作,您将在其中看到上面的命令。
我在How to remove a secondary database from an availability group and rejoin it中写了一个类似的过程。
AG 成员资格和数据库副本所有权是分开的。AG 中每个数据库的复制都是单独处理的,因此您可以将一个数据库复制到其他 2 个节点,而将另一个数据库仅复制到其他 1 个节点。它必须像这样工作,因为直到副本同步到最后一个日志备份才能启动复制。小型数据库可能只需要几秒钟,但大型数据库,特别是在远程站点,可能需要数小时或数天才能同步,因此 SQL Server 不会强迫您拥有大量事务日志,其中包含排队等待复制的数据由于远程数据库未赶上当前 LSN 而无法发送的远程站点。