sql-server - 具有高可用性组的多宿主 SQL Server

标签 sql-server high-availability

我们有两台服务器(SQL-ATL01、SQL-ATL02)组成故障转移群集,每台服务器都作为 SQL Server 高可用性组 (HAG) 的一部分运行。每台服务器有两个网卡。一个是 10Gbit 卡,直接连接到另一台服务器,用于同步 192.168.99.x 子网上的 HAG。另一 block 是 1Gbit 卡,用于将数据库服务器连接到交换机,以便与 10.0.0.x 子网上的应用程序服务器通信。监听器指向 192.168.99.x 子网。

我们希望在集群的另一个物理位置添加第三台服务器 (SQL-NYC01),并将其作为 HAG 的异步副本部分运行,但 VPN 仅路由 1Gbit 网络上子网上的流量。

有没有办法设置故障转移集群和高可用性组来告诉它:

  • 通过 192.168.99.x 发送 SQL-ATL01 <--> SQL-ATL02 的同步副本流量
  • 发送异步副本流量(SQL-ATL01、SQL-ATL02)<--> SQL-NYC01 over 10.0.0.x

或者我们是否必须让所有副本流量在同一 IP 地址/子网上进出?

最佳答案

有一种方法可以做到这一点,否则这将是一个主要缺点。

在开始之前,您应该创建备份并恢复数据库,以便您可以使用初始数据同步类型将仅为JOIN ONLY(因为您只有1Gbit节点)。

join only - is to start synchronization if you already created backups and restored on all secondary replicas

为了让我的生活更轻松,我将假设一些您可以轻松调整的 IP 地址:

sync node: SQL-ATL01 192.168.99.1
sync node: SQL-ATL02 192.168.99.2
async node: SQL-NYC01 10.0.0.10
  1. 转到 SQL Server 属性(在 SQL-ATL01 上),右键单击 SQL Server 服务,然后单击“属性” - 找到一个选项卡“AlwaysOn High Availability”和选中复选框启用AlwaysOn可用性组(您将在上面看到Windows故障转移群集名称。更改此属性后,您需要重新启动SQL服务。对其他两个副本执行此操作SQL-ATL02 SQL-NYC01
  2. 现在启动 SQL Server Management Studio 并连接到主副本,该副本可能是 SQL-ATL01(根据其名称)。右键单击AlwaysOn High Availability并选择向导(第一个选项)。您将在向导窗口中看到您可以做什么的概述 - 您可以单击“下一步”按钮。
  3. 首先,您将指定可用性组名称,例如SQLAG(AG 作为可用性组)
  4. 接下来您需要指定要包含的数据库。选择您想要的。
  5. 现在进入核心(指定副本)。在这里,我们将使用选项卡ReplicasListener

    副本开始,您需要添加副本(我只写重要/更改的列):

╔═══╦═══════════════════╦═════════════════╦═════════════════════╦══════════════════════╗
║   ║ Server Instance   ║ Initial Role    ║ Automatic Failover  ║   Synchronous commit ║
╠═══╬═══════════════════╬═════════════════╬═════════════════════╬══════════════════════╣
║ 1 ║ SQL-ATL01         ║ Primary         ║ Checked             ║ Checked              ║
║ 2 ║ SQL-ATL02         ║ Secondary       ║ Checked             ║ Checked              ║
║ 3 ║ SQL-NYC01         ║ Secondary       ║ Unchecked           ║ Unchecked            ║
╚═══╩═══════════════════╩═════════════════╩═════════════════════╩══════════════════════╝

如果您希望 SQL-NYC01 成为故障转移或同步,则必须选中此处的复选框。

  • 现在进入“监听器”选项卡 单击创建可用性组监听器。您必须指定监听器的 DNS 名称(例如 SQLAGListener),选择端口(默认为 1433)和网络模式 -> 静态 IP
  • 现在单击按钮添加,您可以在其中选择子网和 IP 地址:

    ╔═══╦═════════════════╦═════════════════════════════╗
    ║   ║ Subnet          ║ IP Address                  ║
    ╠═══╬═════════════════╬═════════════════════════════╣
    ║ 1 ║ 192.168.99.0/24 ║ 192.168.99.1 192.168.99.2   ║
    ║ 2 ║ 10.0.0.0/24     ║ 10.0.0.10                   ║
    ╚═══╩═════════════════╩═════════════════════════════╝
    

    然后单击“下一步”。

  • 初始数据同步 正如开头所述,由于您有 1Gbps 节点,我建议您选择仅加入
  • 选项是:

    Full - is to start the synchronization after creating and restoring the backups
    Join only - is to start synchronization if you already created backups and restored on all secondary replicas
    Skip initial data synchronization - this is used if you still need to create a backup and restore to the replicas

  • 接下来是验证,它将检查您的所有设置。单击“下一步”进入摘要页面
  • 最后是结果页面,您将在其中看到所有检查,例如配置端点启动“AlwaysOn_health”创建可用性组SQLAG创建可用性组监听器SQLAGListener
  • 下一步验证

    您应该在每个节点的 SQL Server Management studio 中看到 SQLAG 的每个节点 AlwaysOn HA(SQL-ATL01(主)、SQL-ATL02(辅助)、 SQL-NYC01(次要))。

    如果您将其展开,例如SQL-ATL01 您应该会在可用性副本中看到所有副本,在可用性数据库<​​/strong>中看到选定的数据库以及配置的监听器 (SQLAGListener) strong>)在可用性组监听器中。

    您还可以检查故障转移集群管理器。

    您将在其中看到配置的监听器SQLAGListener: 主节点 192.168.99.1 将显示为在线,其他节点将显示为离线。

    要查看节点的当前状态,您还可以右键单击 SQLAG(Primary) 并显示仪表板。这可以对每个节点完成,并且可以用于测试/查看当前状态(如果需要)。

    编辑

    如果您没有遗漏任何内容,您还应该测试配置。

    关于sql-server - 具有高可用性组的多宿主 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50467598/

    相关文章:

    jenkins - 设置 Jenkins HA - 冷备用节点

    jenkins - Kubernetes 中的主动-被动 Jenkins 设置

    postgresql - 即使 Kubernetes Pod 被杀死,如何保持长期连接处于事件状态?

    sql-server - 如何导入 SDF 文件

    sql-server - 返回 id,其中与其他表上该 id 关联的值计数为 0

    c# - 从表值函数中选择 nhibernate

    sql-server - 表更新时发送邮件

    java - 单个 MySQL 实例 + Hibernate Config 与多个 MySQL 实例

    jakarta-ee - 使用 Watson 服务和高可用性设计进行 Bluemix 开发

    sql-server - 使用 SQL SERVER 2008 R2 的 ASP.NET MVC 4 的 ELMAH