深度解析数据库高可用性:AlwaysOn技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
深度解析数据库高可用性:AlwaysOn技术
为了实现企业核心业务系统的连续运行,保护关键数据免受计划内以及计划外停机的影响,在SQL Server 早期版本中就已经提供了一系列的高可用性解决技术,比如大家耳熟能详的故障转移群集、数据库镜像、日志传递、复制,此四种可高用性技术也有各自的优缺点。正因为现有高可用性技术的不足,SQL Server 2012中提出一种新的高可用性技术AlwaysOn,它集现有高可用性技术的优点于一身,在介绍此技术之前,先对现有高可用性技术简单介绍。
SQL Server 高可用技术简述
故障转移群集
故障转移群集又称为Failover Cluster。此技术使用的共享存储技术,不涉及到底层数据的同步问题,因此可以认为群集的最大好处就是性能较高。正因为如此,存储将成为整个群集技术中的单点故障。在短短的半年内,笔者遇到因为存储单点故障而进行的群集故障操作已有四个,平均一个多月就要处理一个。群集技术的另一个弊端就是某一个时间点只有一个节点处于活动状态,其他节点处于闲置不可用状态,造成了硬件资源的浪费。
数据库镜像
数据库镜像又称为Database Mirror。此技术可提供几乎是瞬时的故障转移,以提高数据库的可用性。镜像基于单个数据库实现,数据库镜像会及时将主数据库的数据同步到镜像数据库。此技术的最大弊端在于镜像数据库处于不可读状态,无形中也造成了硬件资料的浪费。
日志传送
日志传送又称为Log Shipping。同数据库镜像技术一样,日志传送是数据库级操作。可以使用日志传送来维护单个生产数据库(称为“主数据库”)的一个或多个热备用数据库(称为“辅助数据库”)。此技术支持对辅助数据库在还原作业之间的间隔时间内的只读访问权限,可用做报表查询,以提高资源的利用率。此技术一般用于远程的异步容灾,存在部分数据丢失的可能性。
复制
复制又称为Replication。此技术基于数据库对象级别,灵活性较高,可以很方便地将数据和数据库对象从一个数据库复制和分发到另一个数据库,然后在数据库之间进行同步以保持一致性。使用复制,可以在局域网和广域网、拨号连接、无线连接和 Internet 上将数据分发到不同位置以及分发给远程或移动用户。此技术的弊端在于,它不支持DDL 命令。如在源服务器中新建一个表对象,此对象是无法自动复制到目标服务器的。
AlwaysOn高可用性技术
AlwaysOn是SQL Server 2012中提供的一种全新的高可用性技术,其集中了上述高可用性技术的优点,以确保企业无需增加成本和提高复杂度,即可实现最高级别的可用性和数据保护。可在数据中心内部以及跨数据中心实现数据冗余,快速地实现应用程序故障转移,保护现有硬件资源。同时简化了其配置过程。AlwaysOn可以实现服务器实例级和数据库级配置高可用性,所对应的技术就是AlwaysOn故障转移群集实例和AlwaysOn可用性组。
AlwaysOn故障转移群集实例
一般来说,在单服务器情况下,当服务器上出现硬件或软件故障时,连接到该服务器的应用程序或客户端将会停机。在AlwaysOn故障转移群集实例环境中,SQL Server 实例的高可用性受到冗余节点的保护。在群集环境中,一次只能有一个节点拥有群集的资源组。在出现故障(硬件故障、操作系统故障、应用程序或服务故障)或进行计划的升级时,该资源组的所有权就会转移至另一个群集节点。此过程对于连接到 SQL Server 的客户端或应用程序是透明的,可以最大限度地缩短出现故障时应用程序或客户端的停机时间。因此AlwaysOn故障转移群集实例必须由一组物理服务器节点构成,这些服务器节点推荐使用类似的硬件配置以及相同的软件配置,如操作系统的版本、SQL Server 版本、修补程序级别、组件以及实例名称。相同的配置是确保群集在节点间进行故障转移时能够正常运行的前提条件。
SQL Server 2012在原有SQL Server故障转移群集的基础上功能得到了进一步的增强,支持跨越子网实现多站点群集,此技术一般用于两个或两个以上的数据中心,以同时提供本地高可用性和远程的灾难恢复。其中,每个故障转移群集节点都连接到其他子网或其他子网组。这些子网可以处于同一位置中,也可以位于地理上分散的站点。跨地理上分散的站点进行群集有时又被称为扩展群集。因为没有供所有节点都可以访问的共享存储,
所以在多个子网上的数据存储之间应该复制数据。因此,多子网故障转移群集除了具备高可用性之外,还提供了灾难恢复解决方案。下面以图例说明:
在上图中共有两个数据中心并且处于不同子网,本地数据中心subnet1使用的IP地址是10.168.0.10,当本地数据中心发生故障时,SQL Server服务会转移到远程数据中心,远程数据中心subnet2所使用的是不同IP地址,为192.168.0.10来继续提供数据库服务,这两个IP地址之间是OR的关系,也就是说这两个IP地址任意一个在线的话,虚拟网络名称SQLClus都可以正常的向客户端提供服务。
在此需要使用到存储级别的复制技术,将本地数据中心数据库中的数据文件及日志文件复制到远程数据中心,当本地数据中心发生故障时,Windows 群集检测到故障,远程数据中心存储软件可以检测到复制失效,会将存储转换为读写状态,接下来Windows群集会将远程站点可读写的存储设备挂接到远程的Cluster节点上,此时存储复制的方向就从远程数据中心向本地数据中心复制。也就是说,故障转移群集实例成功启动后,Windows群集服务将监视基础群集的运行状况和 SQL Server 实例的运行状况。SQL Server 2012中允许群集服务使用专用连接来轮询活动 SQL Server 实例,以便通过系统存储过程获取详细的组件诊断信息。好处是,利用与 SQL Server 实例的专用连接,能够对组件诊断信息进行可靠轮询,即使在故障转移群集实例负荷较重时也是如此。利用详细的组件诊断信息,可以配置更灵活的故障转移策略,由此用户能选择哪些故障条件将触发故障转移以及哪些故障条件将不触发故障转移。用户利用产生的诊断信息,还可以通过追溯方式更好地对自动故障转移进行故障排除。此诊断信息将存储到与 SQL Server 错误日志并置的日志文件中。可以将这些日志文件加载到日志文件查看器中以检查导致出现故障转移的组件状态,从而确定导致该故障转移的原因。