2016版SQL Server AlwaysOn Availability Groups新特性初探

日期: 2016-02-23 作者:Rick Heiges翻译:张亮亮 来源:TechTarget中国 英文

2012年首次推出SQL Server AlwaysOn Availability Groups以来,在每次发布新版数据库时都会持续对其功能进行增强。而对于SQL Server 2016来说,Microsoft则致力于解决客户关于高可用性和灾备恢复功能的痛点,而不是增加新的功能。 我们来了解一下SQL Server AlwaysOn Availability Groups(AGs)的功能增强。 数据库健康的失效备援:尽管AG失效备援的焦点一直在数据库级别或是与数据库相关的群组上提供冗余,而实际的失效备援是由SQL Server实例作为一个整体来触发的。

例如,在一个可用性群组中的数据库可能会处于……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

2012年首次推出SQL Server AlwaysOn Availability Groups以来,在每次发布新版数据库时都会持续对其功能进行增强。而对于SQL Server 2016来说,Microsoft则致力于解决客户关于高可用性和灾备恢复功能的痛点,而不是增加新的功能。

我们来了解一下SQL Server AlwaysOn Availability Groups(AGs)的功能增强。

数据库健康的失效备援:尽管AG失效备援的焦点一直在数据库级别或是与数据库相关的群组上提供冗余,而实际的失效备援是由SQL Server实例作为一个整体来触发的。例如,在一个可用性群组中的数据库可能会处于离线状态,这可能是硬盘故障导致的,这样一来其余实例就会启动并处于可操作状态。对于SQL Server 2014及更早版本,失效备援是无法被触发的,因为实例的整体健康状态还是好的。在SQL Server 2016中,所有受AG影响的数据库都可以失效备援。

这种行为是可选的。默认情况下,它是不启用的;而当数据库变为非健康状态时,数据库管理员就需要启用该策略来进行失效备援。

2016版SQL Server AlwaysOn Availability Groups新特性

分布式事务协调器支持:对于SQL Server AlwaysOn Availability Groups来说,要求最为强烈的增强功能之一就是支持DTC 分布式事务协调器来管理跨多数据库和实例的事务。在SQL Server 2014及早期版本中的Availability Groups中是不支持DTC的,但是尽管有数据丢失的可能,一些用户还是决定要在SQL Server 2014中实现DTC。

因为DTC是Windows操作系统的一部分,Microsoft对Windows Server 2016和API做了修改,如此一来SQL Server 2016就能完全支持DTC了。因此,你的SQL Server 2016实例必须是以Windows Server 2016 OS为基础的,这样就能获得DTC的支持。在打上KB3090973补丁后,Windows Server 2012 Release 2也可以支持DTC。我遇到过一些客户,他们想从AG技术中受益,但是由于缺乏对DTC功能的支持,他们无法向前推进。

同步副本:在AG中有两种类型的二级副本——异步和同步副本。对于同步副本来说,在发送确认信息给主副本之前,必须先在副本日志中对事务进行记录。为了建立二级副本来作为自动失效备援目标,此副本必须是同步的。在SQL Server 2014中,可以有三个同步副本,但是其中只有两个可以指定为自动失效备援的目标。这就意味着这两个同步副本互为主失效备援目标。在SQL Server 2016中,这三个同步副本如今都能够被指定为失效备援目标。如此一来,如果在失效备援期间甚至是在失效备援之后出现问题,第三个同步副本也能够充当失效备援目标。

优化日志传输:有些用户已经用固态硬盘在高容量、高事务处理环境中开发了AGs,对于副本间日志数据的同步通信要与高速硬件相匹配来说,有时也已成为一项挑战。随着时间的推移,这在环境类型中可能会出现问题,而且来自于同步提交进程的潜在问题可能影响主副本的性能。

Microsoft一直致力于简化使用SQL Server AlwaysOn Availability Groups的时候同步副本间获得更好日志数据量的管道。但是如果产量更快,那么在为数据库恢复而复制日志记录的时候,更多的重做操作就会出现。因此,Microsoft也正致力于让重做操作变为并行以跟上节奏。他们的目标是根据产出量尽量接近非AG单独实例,而不是以建立在SQL Server 2014到SQL Server 2016上的百分比改善为目标。

跨可读二级副本的负载均衡:在SQL Server 2014中,可以通过只读路由表使用可用群组监听机制来分担对二级副本的读取。但是列表中的第一副本会获得最多的活动,这是因为通常都是对它最先进行尝试。

在SQL Server 2016中,可读二级副本列表以循环赛为基础提供连接信息。同时,每个副本都有其自身的只读路由表,如此一来,通过可用群组监听器的只读均衡就能将流量路由至二级副本,这样对于当前主副本来说可能会更具本地性。

群组管理服务账户:群组管理服务账户(gMSA)是Windows Server 2012中发布的一类安全账户,SQL Server 2016是可以完全使用的——尤其是AGs。该群组账户在一个单独的服务器上以本地管理服务账户的方式提供了类似的安全功能,但是它是有域范围的。当以默认设置安装了一个SQL Server 实例的时候,一个本地服务账户便用来为应用程序和处理中的服务管理密码。如果该实例是AG的一部分,那么诸如文件共享之类的对访问一般资源权限的设置和维护就会和安全防范行为一样复杂,这就需要从AG内的每个实例来为服务账户建立。gMSA对该问题进行了处理。除此之外,有些企业使用常规域用户账户来管理服务密码——一项实践是可以在安全审计中进行标记,因为有些缺少授权的人可能会用这些证书进行登录。使用gMSA避免了这一问题并且还能在所有节点间对密码同步进行自动管理。

AlwaysOn Ags与数据仓库

工作负载划分是数据库管理的另外一个方面,而SQL Server 2016和AlwaysOn Availability Groups的结合可以让用户获益。在传统场景中,一家企业运行事务系统用与关键任务数据处理的高速性能。这些通常称为可操作系统,因为它们主要支持的是企业的操作。在某些时候,这些数据会被转化并加载进另一类具有数据仓库功能的系统,这是设计用来支持数据分析的。因此人们常常将它们视作分析系统也并不意外。一般来讲,将数据仓库工作负载置于可操作系统之上会引起性能的全面下降。

Operational Analytics

改变随之而来。对于一个表来说,之前会对记录和字段存储索引的数量和类型进行限制。而在SQL Server 2016中,一个拥有传统B-Tree记录存储索引的表也可以拥有一个聚簇字段存储索引,这在其早期版本中是不予支持的。此功能意味着相同的数据结构可以有效地支持可操作和可分析工作负载,或者可操作分析。该调整也并非灵丹妙药,因为尚有问题需要解决,但是对于企业更好地管理数据并加以充分利用提供了可能性。

尽管这对于SQL Server AlwaysOn Availability Groups来说算不上是真正的功能增强,但是它们在开启可操作分析上扮演了重要的角色。虽然要求基础数据结构支持两种类型,但对工作负载进行划分依然受到人们的青睐。通过使用AGs,一个单独的可读二级副本可以分担数据仓库的工作负载,甚至可以跨越多个可读二级副本,给主副本留足资源有效地支持任务关键型业务流程。另外还有一个附带的好处,即在数据进入数据仓库的过程中鲜有潜在问题出现,因此实时分析便可实现。

总体来讲,对于SQL Server 2016中AGs的这些功能并无真正的新意。但是这些计划的功能增强为可用性、兼容性、可扩展性和可管理性提供了实质的价值。这些功能增强解决了生产应用程序中发现的现实世界的实施问题。

作者

Rick Heiges
Rick Heiges

SQL Server MVP以及DB Best技术公司的首席解决方案架构师。

翻译

张亮亮
张亮亮

TechTarget特邀编辑。毕业于北京邮电大学网络技术研究院。熟悉软件开发测试的各个环节和流程,对操作系统,数据库,计算机网络等有较为深入的理解。现就职于中国电子科技集团公司下属研究所,从事软件研发工作。热衷于英文的学习交流,平时喜欢户外运动,音乐,电影。

相关推荐