“ AlwaysOn”不总是“ Always On”吗?


8

我们创建了Windows故障转移群集,然后添加了两个SQL Server实例作为SQL Server故障转移群集的节点。

我们在SQL Configuration Manager中将服务器设置为使用“ AlwaysOn可用性组”。

为了测试故障转移,我加载并运行了一个长查询,然后通过使用故障转移群集管理器停止活动节点上的群集服务来关闭活动节点。

查询在没有连接的情况下中断,服务器在节点耗尽并新节点接管之前的20秒钟内显示为不可用。

我做错了吗?我应该如何配置它,以确保几乎没有连接丢失?

AlwaysOn是否不总是开启?

Answers:


19

您在这里有很多不同的问题。

问:什么是“始终在线”?

Microsoft使用该品牌名称(该名称在2016年之前写有空格)来描述两个不同的功能:

  • 故障转移群集实例(FCI)-您的祖父用来调用主动/被动群集的方式
  • 可用性组(AG)-与数据库镜像类似,但在某些情况下可与数据库组一起使用(但不适用于系统数据库)

使用这些术语来描述您正在使用的特定“始终在线”功能。

问:在故障转移中,它会一直开启吗?

FCI和AG都不是真正的常态。在故障转移期间,您正在运行的事务将失败,并且连接重试可能会失败5-60秒(或更长时间)。在您的应用程序中构建优美的重试逻辑,还是在诸如Stack Overflow这样的性能下降的工具中构建,完全取决于您。

问:如何配置始终在线?

根据以下因素,其差异很大:

  • 您正在使用哪种AO功能(FCI或AG)
  • 集群中的节点数
  • 您要如何处理仲裁(投票)
  • 是否通过侦听器或虚拟计算机名称使用自动故障转移

这些是涉及大量架构工作的重大决策。有关更多详细信息,请包括上述详细信息,我们将为您提供更多有关如何配置它的信息。

问:不仅仅是选中“始终在线”复选框吗?

不。


3

您可能会把“ Always ON” AG(可用性组)与FCI(故障转移群集实例)混淆,这两者都取决于WSFC(Windows Server故障转移群集)。

单击“始终在线”并不能确保您现在具有AG配置。您必须设置异步,同步,只读/故障转移副本,设置优先级,并考虑其他因素,例如应用程序是否支持此配置。例如,您的应用程序可能使用跨数据库MSDTC事务,该事务不受支持,并且可能导致不可恢复的损坏,需要进行备份还原。

现在,您正在经历的是FCI故障转移。这个是正常的。这将停止一个节点上的服务,并启动另一节点上的服务。这适用于INSTANCE级别。每个数据库都设置了一个AG解决方案,并且服务都在两个节点上运行。SQL使用WSFC API使副本上的数据保持同步,数据库故障转移到该副本。注意不是实例。

在部署到生产之前,您可能需要对此进行大量测试。


1

在AG中测试故障转移的首选方法是简单地断开当前主服务器的连接。只需切断它,从控制台上关闭电源,拉动其网络,用银弹杀死SQL服务,无论如何。您不应该在任何类似GUI的环境中对其进行测试,因为这不是混乱的方式。


最好在会计年度结束前完成-您会吸引很多人以这种方式来测试中学。认真地说,您是对的,尽管至少应该在系统投入生产之前首先完成此操作。在最佳情况下,每次升级系统时,都应从“主要”切换为“次要”,以便定期使用两个系统(但您需要确保已使用硬件,带宽等)。可比)。
RDFozz

0

社区Wiki答案

这是群集的正常和预期行为。

应用程序负责妥善处理断开连接。由于仅在服务器之间复制已提交的事务,因此所有正在进行的事务都将丢失。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.