> 数据库 > SQL Server 2012 >

SQL Server 2012 AlwaysOn探索(上)

毫无疑问,HA或DR对Production DB是至关重要的,原因不必解释。在SQL Server的早期版本,我们可以使用故障转移群集、数据库镜像、日志传递、复制来实现我们需要的HA或DR,但它们均有优缺点:

  • 故障转移群集又称为Failover Cluster。此技术使用的共享存储技术,不涉及到底层数据的同步问题,因此可以认为群集的最大好处就是性能较高,但存储会成为整个群集技术中的单点故障。另外,群集技术的另一个弊端就是某一个时间点只有一个节点处于活动状态,其他节点处于闲置不可用状态,造成硬件资源浪费。
  • 数据库镜像又称为Database Mirror。此技术可提供几乎是瞬时的故障转移,以提高数据库的可用性。镜像基于单个数据库实现,数据库镜像会及时将主数据库的数据同步到镜像数据库。此技术的最大弊端在于镜像数据库处于不可读状态,无形中也造成了硬件资料的浪费。
  • 日志传送又称为Log Shipping。同数据库镜像技术一样,日志传送是数据库级操作。可以使用日志传送来维护单个生产数据库(称为“主数据库”)的一个或多个热备用数据库(称为“辅助数据库”)。此技术支持对辅助数据库在还原作业之间的间隔时间内的只读访问权限,可用做报表查询,以提高资源的利用率。此技术一般用于远程的异步容灾,存在部分数据丢失的可能性。
  • 复制又称为Replication。此技术基于数据库对象级别,灵活性较高,可以很方便地将数据和数据库对象从一个数据库复制和分发到另一个数据库,然后在数据库之间进行同步以保持一致性。 SQL Server 提供了三种复制:快照复制、事务复制以及合并复制。使用复制,可以在局域网和广域网、拨号连接、无线连接和 Internet 上将数据分发到不同位置以及分发给远程或移动用户。复制可用于数据分发、同步、容错、灾难恢复、负载平衡、报表或测试。此技术的弊端在于,它不支持DDL命令。如在源服务器中新建一个表对象,此对象是无法自动复制到目标服务器的。

AlwaysOn是SQL Server 2012中提供的一种全新的高可用性技术,其集中了上述高可用性技术的优点,以确保企业无需增加成本和提高复杂度,即可实现最高级别的可用性和数据保护。可在数据中心内部以及跨数据中心实现数据冗余,快速地实现应用程序故障转移,保护现有硬件资源。同时简化了其配置过程。AlwaysOn可以实现服务器实例级和数据库级配置高可用性,所对应的技术就是AlwaysOn故障转移群集实例和AlwaysOn可用性组。

AlwaysOn 故障转移群集实例利用 Windows Server 故障转移群集 (WSFC) 功能通过冗余在服务器实例级别(故障转移群集实例 (FCI))提供了本地高可用性。FCI 是在 Windows Server 故障转移群集 (WSFC) 节点上和(可能)多个子网中安装的单个 SQL Server 实例。在网络上,FCI 表现得好像是在单台计算机上运行的 SQL Server 实例,但它提供了从一个 WSFC 节点到另一个 WSFC 节点的故障转移(如果当前节点不可用)。当服务器上出现硬件或软件故障时,连接到该服务器的应用程序或客户端将会停机。在将 SQL Server 实例配置为 FCI(而非独立实例)时,该 SQL Server 实例的高可用性受到 FCI 中提供的冗余节点的保护。在 FCI 中,一次只能有一个节点拥有 WSFC 资源组。 在出现故障(硬件故障、操作系统故障、应用程序或服务故障)或进行计划的升级时,该资源组的所有权就会转移至另一个 WSFC 节点。此过程对于连接到 SQL Server 的客户端或应用程序是透明的,可以最大限度地缩短出现故障时应用程序或客户端的停机时间。故障转移群集实例提供的一些主要优点:

  1. 通过冗余提供实例级的保护
  2. 在出现故障(硬件故障、操作系统故障、应用程序或服务故障)时自动进行故障转移
  3. 支持多种存储解决方案,包括 WSFC 群集磁盘(iSCSI、光纤信道等)和服务器消息块 (SMB) 文件共享
  4. 使用多子网 FCI 或在 AlwaysOn 可用性组中运行 FCI 托管数据库的灾难恢复解决方案。利用 Microsoft SQL Server 2012 中的新的多子网支持功能,多子网 FCI 不再需要虚拟 LAN,因此可提高多子网 FCI 的可管理性和安全性
  5. 故障转移过程中无需重新配置应用程序和客户端
  6. 用于实现自动故障转移的针对具体触发器事件的灵活的故障转移策略
  7. 通过使用专用和持久的连接执行定期的详细运行状况检测,实现可靠的故障转移
  8. 通过间接后台检查点在故障转移期间实现可配置性和可预测性
  9. 故障转移期间限制对资源的使用

任何时候,只有资源组所有者(而非 FCI 中的任何其他节点)将在资源组中运行各自的 SQL Server 服务。在出现故障转移(无论是自动故障转移还是计划的故障转移)时,将发生以下事件序列:

  1. 除非出现硬件或系统故障,否则会将缓冲区缓存中的所有脏页写入磁盘。

  2. 资源组中所有相应的 SQL Server 服务都将在活动节点上停止。

  3. 资源组所有权将转移到 FCI 中的另一个节点。

  4. 新资源组所有者将启动其 SQL Server 服务。

  5. 客户端应用程序连接请求将自动定向到使用相同虚拟网络名称 (VNN) 的新活动节点。

建议:在生产环境中,我们建议将静态 IP 地址与故障转移群集实例的虚拟 IP 地址结合使用。建议不要在生产环境中使用 DHCP。 在停机情况下,如果 DHCP IP 租期已到,则它需要额外的时间重新注册与 DNS 名称关联的新 DHCP IP 地址。

关于AlwaysOn 故障转移群集实例更多信息可以参考:http://technet.microsoft.com/zh-cn/library/ms189134.aspx

AlwaysOn可用性组是SQL Server 2012中提供的全新功能,确保了应用程序数据的可用性,实现零数据丢失。AlwaysOn可用性组技术融合了数据库群集和数据库镜像的优点,此技术的一大好处是提供非共享存储,可以避免因为存储的单点故障而造成的整个可用性方案失效。

AlwaysOn可用性组基于数据库(组)级别,是将一组用户数据库(可以是一个或多个)划到一个组中。每组可用性数据库都由一个可用性副本承载。可用性副本包括一个主副本和一到四个辅助副本。 主副本用于承载主数据库,辅助副本则承载一组辅助数据库并作为可用性组的潜在故障转移目标。主副本使主数据库可用于客户端的读写连接,实现对数据库的更改操作。 同时在数据库级别进行同步。 主副本将每个主数据库的事务日志记录发送到每个辅助数据库。 每个辅助副本缓存事务日志记录,然后将它们还原到相应的辅助数据库。 主数据库与每个连接的辅助数据库独立进行数据同步。 因此,一个辅助数据库可以挂起或失败而不会影响其他辅助数据库,一个主数据库可以挂起或失败而不会影响其他主数据库。此外,用户可以借助辅助数据库来实现近实时的报表查询,将查询的负载分担到只读副本。相对于数据库群集及镜像来说,可以更好的利用硬件资源,从而提高IT效率并降低成本。

关于AlwaysOn可用性组更多信息可以参考:http://technet.microsoft.com/zh-cn/library/hh510230.aspx

AlwaysOn集过去HA技术优点于一身,是目前最高级别的HADR技术。

本文对HA相关技术进行了简要的介绍和总结,其中重点介绍了AlwaysOn,下一篇将详细介绍AlwaysOn整个配置的过程及部分管理。

 

 

(责任编辑:IT)