AlwaysOn是在SQL Server 2012中新引入的一种高可用技术,从名称中可以看出,AlwaysOn的设计目标是保持数据库系统永远可用。AlwaysOn利用了Windows服务器故障转移集群(Windows Server Failover Clustering,简称WSFC)的健康检测和自动故障转移的特性,因此,必须建立在WSFC之上,搭建WSFC的过程,请参考《部署AlwaysOn第一步:搭建Windows服务器故障转移集群》。
AlwaysOn支持的高可用单位是可用性组(Availability Group,简称AG),AG是包含了一个或多个用户数据库(User Database)的容器,AG里不能包含系统数据库;AG以用户数据库的集合为单位进行健康检测和故障转移,就是说,AG中的所有数据库作为一个整体发生故障转移。
一,AlwaysOn的基本架构
1,了解AlwaysOn的关键特性
AlwaysOn支持的故障转移,不是以整个SQL Server实例为单位,而是以AG为单位,AG中的多个用户数据库一起进行故障转移;
AG提供虚拟的服务器网络名,也就是AG Listener,无论哪台服务器是当前的Primary Server,客户端都可以使用统一的AG Listener进行连接;
AlwaysOn在辅助服务器(Secondary Server)上维护用户数据库组的副本,同步提交方式能够使Primary Server和Secondary Server上的数据保持完全同步;
在特定的配置情况下,客户端的只读请求可以被自动定向到辅助服务器,减少了Primary Server的IO压力;
一台主服务器最多对应4台辅助服务器,总共5台服务器,发生故障转移时,可以切换到任意一台辅助服务器上;
2,推荐安装SQL Server单机实例(stand-alone)
部署AlwaysOn之前,必须搭建WSFC环境;在Windows集群的结点上,推荐安装SQL Server单机实例,AlwaysOn仅要求所有的SQL Server实例都运行在同一个Windows集群环境中,但SQL Server实例本身不需要是集群模式的,推荐安装SQL Server单机实例。在SQL Server安装中心中,选择“全新SQL Server独立安装或向现有安装添加功能(New SQL Server stand-alone installation or add features to an existing installation)”。
3,可用性数据库(Availability Database)
AlwaysOn可用性组里包含一个或多个用户数据库,称作可用性数据库(Availability Database),每个可用性副本上都存储可用性数据库的副本,这些数据库副本彼此之间互相同步,如果可用性副本是SQL Server单机实例,那么数据库副本就存储在实例的本地磁盘(Local Disk)中。可用性组不能包括系统数据库,就是说,系统数据库不能通过AlwaysOn实现高可用性。
在多个可用性副本上,只有一个可用性副本上运行的数据库处于可读写状态,这个可读写的数据库称作Primary Database,这个可用性副本称作Primary Replica,其余的副本都称作辅助副本(Secondary Replica),辅助副本上的数据库可能是不可访问的,或者是只读的,这些数据库称作辅助数据库。一旦发生故障转移,任何一个辅助副本都可以成为新的Primary Replica,主副本会不断地将Primary database上的数据更新发送到辅助副本,实现副本间的数据同步。
4,AG是集群的资源组
从WSFC的角度来看,AG是集群的资源组,因此,AG中包含的所有用户数据库是作为一个整体在集群的结点之间进行故障转移的,这使得AlwaysOn非常适合那些需要用到多个数据库的应用程序。
5,侦听器(Listener)
在故障转移集群管理器(Failover Cluster Manager)中,WSFC只能看到一个资源组,就是AlwaysOn的可用性组(AG),但是应用程序不能使用资源组的名字登录SQL Server实例,必须知道当前主副本(Primary Replica)的名字,使用这个服务器名称连接SQL Server实例。一旦发生可用性组(AG)的故障转移,应用程序必须通过修改连接字符串(Connection String)重新连接到新的Primary Replica上,这很麻烦。通过可用性组侦听器(Availability Group Listener,简称Listener),能够解决该问题。Listener是一个虚拟的服务器,用于让应用程序透明的连接到主副本而不会受到故障转移的影响,一个Listener包含虚拟的网络名(DNS Name),虚拟IP地址和端口号。创建了Listener之后,WSFC就会为可用性组资源添加虚拟IP地址和虚拟网络名资源,应用程序通过连接虚拟网络名,连接主副本(Primary Replica)上的SQL Server实例。