1、数据库级可用性-只读副本:SQL Server 2012-4个,SQL Server 2014-8个
a、每个节点都安装了本地的 SQL Server,可以不使用共享存储,但是数据库在每个节点上的磁盘文件夹必须是一致的。
b、主节点可读可写,其它辅助节点只可读。
c、全部节点都加入一个 Windows Fail-over Cluster 中。
可以为AlwaysOn可用性组配置一个侦听器(虚拟计算机)。客户端如果访问这个侦听器则可以实现read/write;客户端如果访问指定的辅助节点,可能实现read/write(如果该节点是主节点),或者只能read-only。
负载分离:
a、可以将一部分的read only请求发送到辅助副本:
1)第一种:修改应用程序,在客户端实现。例如,指定将read/write都指向AlwaysOn可用性组的侦听器(不赞成指向某个节点,因为无法确保某个节点可以write),将部分read only请求指向辅助副本。
2)第二种:为AlwaysOn可用性组配置只读路由:
脚本如下:
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER01' WITH
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER01' WITH
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433'));
2、群集:实例级可用性-AlwaysOn 故障转移群集实例可以在最多16个节点(企业版才支持16个节点,标准版只支持2个节点)间实现故障转移(Fail-over)。
a、数据库必须位于共享存储。这可能是单一故障点。一旦共享存储崩溃了,SQL Server 服务将停止,数据将全部丢失。
b、任何时刻只有主节点提供 SQL Server 服务,其它节点的 SQL Server 服务(实例)处于“冷备”状态。当主节点的SQL Server服务发生故障时,才自动转移,然后由另一个备用节点继续提供服务。
(二)群集与侦听器
一、群集
1、 MSFC-Microsoft Failover Cluster:创建SQL Server群集之前,必须在Windows中实现一个MSFC,然后再将SQL Server安装成为MSFC中的一个“服务与应用程序”
2、节点:同一时间只能在其中一个节点(主节点)运行这个SQL Server实例
3、Fail-over:故障转移群集是用于获得高可用性的,而非用于实现负载平衡,只有在发生故障时才会转移,而不是负载平衡(Load Balance)
4、仲裁-节点配置方式:仲裁需要使用投票机制,得票超过半数的节点才能成为主节点。
Windows Server 2003-2个节点加1个仲裁磁盘。
Windows Server 2008则推荐使用节点多数(奇数个节点),当节点数量为偶数时才推荐添加一个仲裁磁盘。也就是说,Windows Server 2008 创建 Microfost Windows Cluster 时,仲裁磁盘(共享存储)并不是必须的。