SQL Server 中的高可用性 (HA)
它是一种解决方案、流程或技术,可在计划内或计划外中断的情况下,通过同一位置的不必要和容错组件,使服务、应用程序或数据库 24×7 和 100% 可用性。
MS SQL Server 中主要有五个选项来为数据库设置高可用性解决方案:
- 复制
- 日志运输
- 镜像
- 集群(故障转移集群)
- AlwaysON 可用性组 (AG)
复制:
源服务器称为Publisher。目标服务器称为Subscriber 。有一个可选的服务器为订阅者存储复制的数据,称为Distributor 。
源数据通过复制代理(作业)复制到目标。复制的主要目的是将信息从一个数据库重复和分发到另一个数据库。
我们将概述四种复制类型:
- 快照复制
- 事务复制
- 合并复制
- 对等复制
快照:
快照复制发生在对数据库拍摄快照并将快照复制到订阅者时。快照复制可以用作初始数据集,以开始具有最小更改的后续复制过程。
- 交易:
事务复制从应用于订阅者的发布者数据库的快照开始。一旦快照到位,发布者上发生的所有事务都将被复制到订阅者。 - 合并:
合并复制从应用于订阅者的发布者数据库的快照开始。在发布者和订阅者处所做的更改会离线隐藏。一旦发布者和订阅者同时恢复在线,订阅者将与发布者同步,反之亦然。 - 点对点 :
对等复制通常在事务发生时使用,它们在复制所涉及的所有节点上执行,以保持数据近乎实时的同步。
日志运输:
源服务器称为主服务器。目标服务器称为辅助服务器。有一个可选的服务器,将通过日志传送状态进行监控,称为监控服务器。
辅助数据库从主数据库恢复,没有恢复,通过使用 SQL Server 代理和作业计划,最终用户无法访问数据库。虽然日志传送支持多个辅助服务器很好,但它可能是用于 HA 的最小量,因为在发生故障转移之前,辅助数据库必须通过手动应用未恢复的日志备份来完全更新。
镜像:
源服务器称为主体服务器。目标服务器称为镜像服务器。有一个用于进行自动故障转移的可选服务器称为见证服务器。
当镜像数据库从主体恢复而没有恢复时,最终用户将无法访问数据库。启用镜像后,主体上发生的所有事务都将复制到镜像中。使用此选项的故障转移通常只需几秒钟即可完成。如果主体服务器关闭,镜像服务器将自动成为主体。
集群(故障转移集群):
运行 SQL 服务的节点称为活动节点。没有运行 SQL 服务的节点称为被动节点。
设置集群的先决条件 -
具有共享存储的 Windows 群集设置。
聚类——
它至少涉及两台服务器。集群将允许一个物理服务器接管另一台发生故障的物理服务器的职责。这通常用于需要接近 100% 正常运行时间的关键环境中。当一个服务器的资源发生故障时,另一个服务器将自动获取故障服务器停止的位置,从而导致很少或没有停机时间。
两种聚类是:
- 主动/主动:
在主动/主动模式下运行时,SQL Server 在两台服务器上都主动运行。如果其中一个 SQL Server 发生故障,则另一台 SQL Server 将进行故障转移。 - 主动/被动:
在主动/被动模式下运行时,SQL Server 在一台服务器上运行,而另一台服务器则等待以防万一发生故障。这可能是最流行的选择,因为它不会影响性能。
AlwaysON 可用性组:
源服务器称为主副本。目标服务器称为辅助副本。
设置 AlwaysON 的先决条件 –
没有共享存储的 Windows 群集设置。
始终开启 –
可用性组是 SQL Server 2012 引入的一项新功能。它使用称为可用性组的组,这些组包含选定的数据库,如果发生故障,这些数据库将一起进行故障转移。它包含一个主副本,其中数据库可用于读写连接,以及最多八个辅助副本,可用于只读连接以进行报告。为了使数据库用户更容易连接到可用性组,可以创建可用性组侦听器。可用性组侦听器是一个虚拟名称,由唯一的 DNS 名称、虚拟 IP 和 TCP 端口号组成,它提供与该可用性组上的副本的直接连接。