高可用性组和故障转移

时间:2015-04-28 16:36:50

标签: sql-server sql-server-2012 high-availability

我在SQL2012中有HAG的主动和被动节点。当有一个" READ-ONLY"被动节点一直被击中。使用连接字符串传递的参数。因此,例如,报告将在日常使用此类连接。

最近我们有一个QA环境设置,HAG是主动 - 主动,所以没有被动节点。通过与DBA的交谈,我被告知2个设置(主动 - 主动 - 主动 - 被动)之间的区别在于,在故障切换情况下,主动 - 主动设置将允许" READ-WRITE&# 34;与的连接继续有效

在主动 - 被动故障转移情况下,任何" READ-WRITE"连接不起作用,因为被动数据库只允许" READ-ONLY"类型连接。此外,更多像SSRS这样的工具会失败,因为它们一次只能在一个节点中设置。目前我们只将它安装在被动节点中。这没有意义,因为被动节点是一个节点,这意味着我们应该能够将它安装在主动节点中。从技术上讲,这一切都是有道理的......但事实并非如此。

HAG群组的主要目的之一提供故障转移保护,无论设置如何?有人能说清楚这个吗?

1 个答案:

答案 0 :(得分:0)

我认为您误解了DBA或者他们不正确。

在可用性组中,关于您希望辅助节点的行为方式,您有三个选项(按照从最顺序到最不允许的顺序):

  1. 允许任何连接
  2. 仅允许将应用程序意图指定为readonly的连接
  3. 不允许连接
  4. 主副本还有两个选项(从最多到最不允许的顺序):

    1. 允许任何连接
    2. 仅允许将应用程序意图指定为readwrite的连接符
    3. 这有点令人困惑的是,此首选项已配置为每个副本。也就是说,您可以进行以下配置:

      • 节点A.
        • 主要:接受任何连接
        • 辅助:接受无连接
      • 节点B.
        • 主要:接受读写连接
        • 辅助:接受只读连接

      在故障转移情况下,主节点的角色将转移到另一个节点,每个副本都遵循为其配置的任何语义。因此,在上面的示例中,如果主节点是节点A,则将接受连接到它的任何应用程序,而在节点B处仅接受只读连接。当发生故障转移(使节点B成为主节点)时,仅读取 - 节点B将接受写连接,而节点A不接受任何连接。我认为为了避免混淆,以相同的方式配置所有节点是最好的。但请与您的DBA讨论并询问每个节点的行为在主要和次要角色中的作用。