【问题标题】:High Availability Groups and Fail Over高可用性组和故障转移
【发布时间】:2015-05-05 12:50:35
【问题描述】:

我在 SQL2012 中有一个用于 HAG 的主动和被动节点。当连接字符串传递了“READ-ONLY”参数时,被动节点会不断受到打击。因此,例如,报表每天都会使用这种类型的连接。

最近我们有一个 QA 环境设置,HAG 是主动-主动的,所以没有被动节点。通过与 DBA 的交谈,我被告知 2 种设置(主动-主动与主动-被动)之间的区别在于,在故障转移情况下,主动-主动设置将允许“READ-WRITE”连接继续工作

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

无论设置如何,HAG 组的主要目的之一不是提供故障转移保护吗?有人能解释一下吗?

【问题讨论】:

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


    【解决方案1】:

    我认为要么您误解了您的 DBA,要么他们不正确。

    在可用性组中,您可以通过三个选项来选择辅助节点的行为方式(按照从最允许到最不允许的顺序):

    1. 允许任何连接
    2. 仅允许将应用程序意图指定为只读的连接
    3. 不允许连接

    您还有两个主要副本的选项(同样按照从最允许到最不允许的顺序):

    1. 允许任何连接
    2. 仅允许将应用程序意图指定为读写的连接

    使这有点令人困惑的是,此首选项是按副本配置的。也就是说,您可以有以下配置:

    • 节点 A
      • 主要:接受任何连接
      • 次要:不接受任何连接
    • 节点 B
      • 主要:接受读写连接
      • 次要:接受只读连接

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 2018-04-28
      相关资源
      最近更新 更多