在知道了基本的Alwayson背景后,需要了解在搭建Alwayson环境时的基本架构模式是怎样的:
-
Alwayson的基本架构
部署一套Alwayson方案:Windows Server群及环境+SQL Server实例(可以是群集节点上安装单机实例或群集的多个节点安装SQL Server群集实例)+在实例上配置Alwayson可用性组(这些实例就被称为可用性组的可用性副本)。Alwayson仅要求所有的SQL Server实例都运行在同一个Windows群集上。SQL Server实例本身不需要群集模式,所以一般情况下,推荐可用性副本都使用单机模式SQL Server.
-
Alwayson的可用性组中所有的数据库是作为一个整体在群集结点间进行故障转移的。但是可用性组不包含系统数据库。
-
在多个可用性副本间只有一个可用性副本运行的数据库是处于可读写的状态,这个可读写的数据库被称为主数据库,而这个可用性副本被称为主副本,其余副本都称为辅助副本。
-
Alwayson可用性副本利用了Windows群集的特性来进行故障侦测和转移,因此受到群集的一些限制:
-
一个可用性组中的所有可用性副本必须运行在单一的Windows群集上,跨不同Windows群集的SQL Server实例不能配置成一个Alwayson可用性组。
-
一个可用性组的所有可用性副本必须运行在Windows群集的不同结点上。运行在同一个结点上的两个不同的实例不能用在同一个可用性组的副本。
-
如果某个可用性副本实例是一个SQL群集实例,那同一个SQL群集的其他非活跃结点上安装的任何其他SQL实例都不能作为它的辅助副本。
-
Alwayson的可用性副本,可用性组和群集结点的关系:
Windows Server Failover Clustering(WSFC) Cluster:故障转移群集
-
Windows群集有两个子网(subnet A和Subnet B),子网A有三个结点,子网B有两个节点
-
子网A的结点A1和A2安装了一个群集的SQLServer实例Instance1,A3,B1,B2这三个结点分别安装了三个不同的单机的SQL Instance实例.这样4个实例组成了一个可用性组(Availability Group),这些实例是这个可用性组的可用性副本(Availability Replica).
-
这些实例都存储一套用户数据库组(Availability Database),但是只有Instance 1上的数据库是可读写的。
-
如果NodeA1或NodeA2上安装有任何其他SQL实例,这些实例都不能被加入到可用性组中。
-
为了在发生故障转移的时候,对用户来说是透明的,需要建立一个Listener(包含虚拟IP地址、虚拟网络名(DNS名)、端口号),创建一个虚拟网络名。但主副本的实例名还是同样可以连接到数据库实例的。
-
SQL Server 2012以前的版本,只有在实例启动的时候才会绑定IP地址和端口。但是SQL Server 2012允许你在副本实例处于运行状态的时候,随时绑定新的IP地址,网络号和端口号。所以可以随时为可用性组添加Listener,且立即生效。当添加后SQL Server会有错误日志。