SQL Server 2012配置Always On可用性组

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

一、AlwaysOn简介


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

 

AlwaysOn可用性组基于数据库(组)级别,是将一组用户数据库(可以是一个或多个)划到一个组中。每组可用性数据库都由一个可用性副本承载。可用性副本包括一个主副本和一到四个辅助副本。 主副本用于承载主数据库,辅助副本则承载一组辅助数据库并作为可用性组的潜在故障转移目标。主副本使主数据库可用于客户端的读写连接,实现对数据库的更改操作。 同时在数据库级别进行同步。 主副本将每个主数据库的事务日志记录发送到每个辅助数据库。 每个辅助副本缓存事务日志记录,然后将它们还原到相应的辅助数据库。 主数据库与每个连接的辅助数据库独立进行数据同步。 因此,一个辅助数据库可以挂起或失败而不会影响其他辅助数据库,一个主数据库可以挂起或失败而不会影响其他主数据库。

 

部署 AlwaysOn 可用性组需要一个 Windows Server 故障转移群集 (WSFC) 群集。 给定可用性组的每个可用性副本必须位于相同 WSFC 群集的不同节点上。 部署AlwaysOn可用性组时,系统会为每个可用性组创建一个 WSFC 资源组。WSFC 群集将监视此资源组,判断节点间的状态,以便评估主副本的运行状况。 当发生失败时实现故障的转移,针对 AlwaysOn 可用性组的仲裁基于 WSFC 群集中的所有节点,而与某一给定群集节点是否承载任何可用性副本无关。

 

用户可以通过创建一个可用性组侦听器来提供到给定可用性组的主副本的客户端连接。 “可用性组侦听器”采用DNS名称的方式连接给定可用性组的资源,以便将客户端连接定向到相应的可用性副本。

 

对于每个可用性副本,AlwaysOn所支持的事务提交模式分为同步提交模式或异步提交模式。在异步提交模式下,主副本无需等待确认异步提交辅助副本已强制写入日志,便可提交事务。 异步提交模式可最大限度地减少辅助数据库上的事务滞后时间,但允许它们滞后于主数据库,因此可能会导致某些数据丢失。此可用性模式是一种灾难恢复解决方案,适合于可用性副本的分布距离较远的情况;所谓同步提交模式是指在提交事务之前,同步提交主副本要等待同步提交辅助副本确认它已完成强制写入日志。 同步提交模式可确保在给定的辅助数据库与主数据库同步时,充分保护已提交的事务。 这种保护的代价是延长事务滞后时间。此可用性模式相对于性能而言更强调高可用性和数据保护,当主副本和辅助副本距离较近时可以使用此方法,解决时时同步的问题。

 

当Windows群集触发故障转移后,故障转移目标(原先的辅助副本)能够接管主副本角色,对自己管理的数据库进行恢复操作,使它们作为新的主数据库。原先的主副本如果在故障转移后还可用,就会成为辅助副本,它上面的数据库就成为了辅助数据库。

 

故障转移形式是由主副本和故障转移目标两者的模式所共同决定的。两个副本间要发生自动故障转移,需要两者都配置为同步提交模式+自动故障转移模式。两者中有一个配置了手动故障转移,则自动故障转移就不能发生。两者间有一个配置了异步提交模式,则它们之间就只能发生强制故障转移。

 

强制故障转移可能会丢失数据。自动故障转移和手动故障转移会保证数据的安全。为了防止丢失数据,自动故障转移和手动故障转移都要求故障转移目标是使用同步提交模式的辅助副本且当时处于SYNCHRONIZED状态。如果已处于SYNCHRONIZED状态的辅助副本发出强制故障转移命令,其行为与手动故障转移时的行为相同。对于异步提交模式的辅助副本,无论数据是否已经达到同步,它永远只会处于SYNCHRONIZING状态,于是它只能支持强制故障转移这一种形式。

 

 

相对于数据库镜像,AlwaysOn的一个重要优势就是可以将辅助数据库配置成可读模式,这极大地增强了数据库整体的伸缩性。通过将只读请求分流到辅助数据库,主副本的工作负载得到了减轻,读和写之间的冲突可以得到缓解,辅助副本的硬件资源也能得到利用。同时,通过AlwaysOn的“只读路由”功能,只读操作可以动态地被转向辅助副本。在一定程度上,可以实现对终端用户透明。利用这个功能,SQL Server可以实现工作负荷的Scale-out(由多台SQL Server同时响应客户端发来的工作负载)。当客户端连接使用Listener的名字来访问SQL Server实例时,只读路由功能可以将来自客户端的只读请求从主副本上自动重定向到可读的辅助副本上去执行。客户端应用程序只需要确保连接的服务器名是Listener的名字,而无须去关心背后到底是哪个副本响应这个请求。这个功能可以自动分流一部分主副本的工作负载,使得主副本有更多的资源处理其他读写请求。

 

要让只读操作能“透明”地被自动转向辅助副本,必须解决下面三个问题:

  • 客户端要标明自己发来的操作是“只读”操作。这个判定是程序开发员在编写程序的时候,通过ApplicationIntent关键字指定的,ApplicationIntent=ReadOnly,ApplicationIntent=ReadWrite

  • 辅助数据库要被配成可读模式。



  • 客户端的连接,要能够被重定向到可读辅助副本。AlwaysOn是用“只读路由”机制来实现的。


本文原始出处:江健龙的技术博客 http://jiangjianlong.blog.51cto.com/3735273/1791763


二、部署环境准备

1、部署环境

wKioL1ee6JGireQiAABZQcEOG1Q033.png

2、创建故障转移群集,使用共享磁盘作为仲裁盘。如果有3个以上节点,可以不必使用仲裁盘,但是使用仲裁盘仍是保障群集良好运行的推荐方式

wKiom1dqOWzj1JjNAABPuBrV_MU321.png

wKioL1dqOWzSKVk8AADwrA1wubw940.png

3、在两个节点都独立安装SQL2012SP1,注意是独立安装,而非群集节点安装

wKiom1dqOW3xfXlIAAEd2azkxVk967.png

4、在两个节点都启用SQL Server Always On可用性组

wKioL1dqOW6j59PCAACs4vstKs4400.png

5、在SQL2012-01上创建TestDB,并设置恢复模式为完整

wKiom1dqOXCR5WdVAAEkZdpD8aY329.png

6、为TestDB做一次完整备份

wKioL1dqOXGgvwr9AAB6P3hdBYs874.png

wKioL1dqOXLDNVBTAAAg2s9PSEM911.png

7、将存储备份包的目录共享出来并设置相应的权限

wKiom1dqOXOSZp2pAADM1GnNq58521.png


三、配置Always On可用性组

1、使用向导创建可用性组

wKioL1ee58SQOjQuAAHYdzOaQyc706.png

2、指定可用性组名称

wKioL1dqOXfh6jCVAABq_VJtiHA509.png

3、选择要添加到可用性组中的数据库

选要添加到可用组中的数据库。这些数据库将会成为一个整体一同发生故障转移。在一个可用性组里最多可以添加100个数据库。在数据库名的右侧,会显示数据库的状态。如果该数据库的状态不满足可用组的要求,那么就无法勾选这个数据库。数据库要满足的要求包括:

需要是用户数据库,系统数据库不能加入可用性组。

数据库可以读写。只读的数据库不允许加入可用性组。

数据库要处于多用户模式。

数据库没有使用AUTO_CLOSE

数据库的恢复模式是完全恢复。

数据库已经做过完整备份。

不属于任何其他的可用性组。

数据库上没有配置数据库镜像。

wKioL1dqOXizhNacAAB4Rlg9PqQ972.png

4、指定副本

点击添加副本,把第二个节点SQL2012-02添加进来(最多可以有5个可用性副本),并指定每个可用性副本的模式:

同步提交模式:该模式决定了主副本和辅助副本之间是否要保持完全同步。最多可以有3个同步提交副本。

自动故障转移模式:该模式决定了当主副本失败时是否将可用性组转移到指定的辅助副本上。最多可以将两个可用性副本配置为自动故障转移。

可读辅助副本:该模式决定了该副本作为辅助副本时是否可读。

wKiom1dqOXqTdp-AAAC2zrfr6oQ072.png

5、配置端点

端点是AlwaysOn可用性组的重要组成部分,它的主要作用有两个:

1)主副本和辅助副本之间通过端点传送日志块和消息,同步数据。

2)主副本和每个辅助副本通过端点互相发送ping来确定彼此是否互相连通

端点的配置按默认即可。

wKiom1dqOXyxi_InAACVRGqsIWY087.png6、指定备份首选项和优先级

首选辅助副本:如果有任何辅助副本可用,备份都应该在辅助副本上执行。如果主副本是唯一还处于在线状态的副本,那么备份才会在主副本上执行。

副本备份优先级:1表示最低优先级,100表示最高优先级。默认情况下,所有辅助副本都具有相同的备份优先级,如果保持这个设置,Always On就必须使用其他因素来决定执行备份的副本。


wKioL1dqOX7D6Ws-AAC-GaIyi7Q029.png7、创建侦听器

只能通过 SQL Server 为每个可用性组创建一个侦听器。 通常情况下,每个可用性组只需要一个侦听器。侦听器就是一个虚拟的网络名称,可以通过这个虚拟网络名称访问可用性组,而不用关心连接的是哪一个节点,它会自动将请求转发到主节点,当主节点发生故障后,辅助节点会变为主节点,侦听器也会自动去侦听主节点。

创建侦听器需要提供:

1IP地址。建议使用静态IP地址

2)网络名(DNS名)。确保该名字在网络上是唯一的。这个名字就是应用程序用来连接主副本的接口,它和任意一个副本的服务器名都不相同。

3)端口号。需要指派一个服务器上未被使用的端口。这样副本实例才能成功绑定和监听这个端口。

wKiom1dqOYGTCfolAACvuDKmL4c727.png8、选择初始数据同步

其他的副本通过这个共享目录获得数据库的备份并在各自的实例上进行还原。这个和日志传送进行初始化的步骤很像。这里要确保每个副本实例的服务账户对共享目录和本地目录有合适的读写权限。另外要注意,通过这种方式初始化,要确保主副本上存放主数据库文件的路径在辅助副本上也存在。

wKiom1dqOYPzSqi8AACtQv4094o834.png

9、验证可用性组

wKioL1dqOYfR2PEvAADVGzOKFMg568.png

10、可用性组摘要

wKioL1dqOYfzFyLVAACz8euHJLk293.png

wKiom1dqOYqT8USGAAC1wMll5ws142.png

11、完成可用性组的创建

wKiom1ee6U_gmrwWAAE0FPx-nyI562.png


四、可用性组创建完成后检查

1、在故障转移群集中确认可用性组

已创建群集资源组AlwaysOnGrp01,并承载在SQL2012-01节点上。


wKioL1dqOY2z40ZxAADiXOV7YTc859.png2、登录SQL2012-01确认是主副本

wKioL1dqOZDg59VbAAHdh3hefyk537.png

本文转自    jianlong1990  博客,原文链接:        如需转载请自行联系原作者



相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
8天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
51 10
|
18天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
16 0
|
8天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
66 6
|
3天前
|
SQL 安全 网络安全
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
8 0
|
8天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
12天前
|
SQL 数据安全/隐私保护
SQL Server 2016安装教程
SQL Server 2016安装教程
17 1
|
12天前
|
SQL 安全 Java
SQL server 2017安装教程
SQL server 2017安装教程
14 1
|
25天前
|
SQL 存储 Python
Microsoft SQL Server 编写汉字转拼音函数
Microsoft SQL Server 编写汉字转拼音函数
|
1月前
|
SQL 存储 数据库
数据安全无忧,SQL Server 2014数据库定时备份解密
数据安全无忧,SQL Server 2014数据库定时备份解密
|
1月前
|
SQL 网络协议 Windows
破解SQL Server迷局,彻底解决“管道的另一端无任何进程错误233”
破解SQL Server迷局,彻底解决“管道的另一端无任何进程错误233”