广告
返回顶部
首页 > 资讯 > 数据库 >AlwaysOn 2016 新特性和提升
  • 601
分享到

AlwaysOn 2016 新特性和提升

2024-04-02 19:04:59 601人浏览 薄情痞子
摘要

AlwaysOn 2016 新特性和提升AlwaysOn可用性组作为SQL Server 2012的新特性被引入,它增强了数据库镜像和故障转移集群技术,提供了高可用和灾难恢复。在sql Server 201

AlwaysOn 2016 新特性和提升


AlwaysOn可用性组作为SQL Server 2012的新特性被引入,它增强了数据库镜像和故障转移集群技术,提供了高可用和灾难恢复。


sql Server 2016中AlwaysOn有些特性的增强要求运行在windows Server 2016上。然而,如果你仍然运行在Windows Server 2012 R2上,仍然有很多提升是可用的。


AlwaysOn 2016一些新特性和增强:

  • l 支持更多故障转移目标

  • l 更好的日志传输性能

  • l 可读副本的负载均衡

  • l 支持DTC

  • l 数据库级别的健康监控

  • l 支持组管理的服务账号

  • l 基本可用性组

  • l 无域可用性组

  • l 分布式可用性组

  • l 支持加密数据库

  • l 支持SSIS目录

  • l BI增强


支持更多故障转移目标

在AlwaysOn 2012和2014,允许最多只能配置2个副本作为自动故障转移副本(包括当前主副本在内),2016允许配置3个。

自动故障转移通常用于支持高可用,在故障转移中同步数据流接近零数据丢失。

AlwaysOn 2016 新特性和提升


更好的日志传输性能

随着高速硬件SSD的普遍使用,提供了更大的吞吐量,这对于写事务到辅助副本是很重要的。因此,微软更新了AlwaysOn的数据同步过程,简化了管道以便有更好的吞吐量和CPU上的更少压力。性能瓶颈大多数可能发生在日志捕获(Log Capture)和重做(Redo)步骤。之前,日志捕获和重做步骤使用单线程处理日志,而现在这些步骤使用多线程并行运行,极大提升了性能。


数据同步描述如下:

Transaction Occurs –> Log Flush –> Log Capture –> Send –> Log Received –> Log Cached –> Log Hardened –> Acknowledgement Sent –> Redo

AlwaysOn 2016 新特性和提升


可读副本的负载均衡

AlwaysOn一个很棒的特性是能够使用辅助副本用于只读操作。在AlwaysOn 2016之前的版本,监听器会定向只读请求到第一个可用副本,即便你可能有多个辅助副本,并且你可能设置路由表优先将度请求定向到副本3或副本4,而不是副本2。现在AlwaysOn 2016的可读副本以轮询的形式暴露给监听器。


1.配置辅助副本的只读访问

ALTER AVaiLABILITY GROUP [ag]
MODIFY REPLICA ON N'SQL16N2' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = READ_ONLY))
Go
ALTER AVAILABILITY GROUP [ag]
MODIFY REPLICA ON N'SQL16N3' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = READ_ONLY))
GO


2.配置只读路由URL

ALTER AVAILABILITY GROUP ag MODIFY REPLICA ON N'SQL16N2' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'tcp://SQL16N2:1433'));
GO
ALTER AVAILABILITY GROUP ag MODIFY REPLICA ON N'SQL16N3' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://SQL16N3:1433'));
GO


3.SQL Server 2016在只读路由列表中引入了负载均衡列表

当SQL16N1为主副本角色时,创建只读路由列表:

ALTER AVAILABILITY GROUP ag MODIFY REPLICA ON N'SQL16N1' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=(('SQL16N3', 'SQL16N2'), 'SQL16N1')));


以上路由列表表示在SQL16N3和SQL16N2之间负载均衡只读连接。我们有两个嵌入列表:

List 1: 'SQL16N3', 'SQL16N2'

List 2: 'SQL16N1'


按如下方式工作:

1. 路由到第一个列表中的副本

SQL16N3和SQL16N2对只读连接是可访问的。第一个只读连接被路由到SQL16N3,第二个只读连接被路由到SQL16N2,第三个只读连接被路由到SQL16N3,第四个只读连接被路由到SQL16N2,等等,在第一个列表的两个副本之间使用一个只读连接的轮询分发。

2. 如果任一副本不可用了,路由将继续在第一个列表的副本中

如果SQL16N3或者SQL16N2对于只读连接变为不可访问,那么只读连接将只被路由到第一个列表的可访问只读副本。例如,如果SQL16N3不是synchronized状态,或者ALLOW_CONNECTIONS被设为NO,那么所有的只读连接将会被路由到SQL16N2。只要只读连接的其中一个服务器可用,那么只读连接就不会被路由到SQL16N1。

3. 如果第一个列表中的所有副本都不可访问,将会路由到下一个列表

对于只读连接,如果SQL16N3和SQL16N2变为不可访问,那么所有的只读连接将只会被路由到下一个列表的副本,这里就是SQL16N1。

4. 如果第一个列表中的任一副本可用,将会恢复路由到第一个列表

因为对于只读连接,可访问的第一个列表中的辅助副本有更高的优先级,后面的只读连接将会恰当的连接到他们。


此外配置可用性组路由列表,你也必须确保客户端的应用连接串当连接到AG监听器时增加ApplicationIntent参数,值为ReadOnly。如果在客户端应用连接串中没有设置,那这个连接将自动定向到主副本。以下是只读连接串的示例:

Server=tcp:AGListener,1433; Database=AdventureWorks;IntegratedSecurity=SSPI; ApplicationIntent=ReadOnly

也最好不要在相同的负载均衡组中混合同步和异步副本。


支持DTC

注:只有运行在Windows Server 2016或者升级了KB3090973补丁的Windows Server 2012 R2上

如果你的客户端应用程序需要执行跨多个实例的事务,那么就需要分布式事务协调器(DTC)。DTC是操作系统的一部分,当你的数据库引擎执行跨多个实例的事务时,用于确保一致性。

USE AdventureWorks2012;
GO
BEGIN DISTRIBUTED TRANSACTION;
-- your tsql statement here
DELETE FROM AdventureWorks2012.HumanResources.JobCandidate
WHERE JobCandidateID = 13;
GO
COMMIT TRANSACTION;
GO


你的应用程序不仅可以在多个SQL Server实例间执行事务,也可以在其他兼容DTC服务器中,像WEBSphere或oracle


用于 AlwaysOn 可用性组和数据库镜像的跨数据库事务和分布式事务。

https://msdn.microsoft.com/en-us/library/mt748186.aspx Https://blogs.technet.microsoft.com/dataplatfORM/2016/01/25/sql-server-2016-dtc-support-in-availability-groups/

https://docs.microsoft.com/zh-cn/sql/database-engine/availability-groups/windows/transactions-always-on-availability-and-database-mirroring?view=sql-server-2017


为了能在AlwaysOn 2016中执行分布式事务,可用性组创建语句CREATE AVAILABILITY GROUP带有WITH DTC_SUPPORT = PER_DB从句。

CREATE AVAILABILITY GROUP AGSQL2016
WITH (DTC_SUPPORT = PER_DB)
FOR DATABASE [Database1, Database2, Database3]
REPLICA ON
'SQLSRVTST1' WITH — substitute node name
(
ENDPOINT_URL = 'TCP://SQLSRVTST1.<domain>:7022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = AUTOMATIC
),
'SQLSRVTST2' WITH — substitute node name
(
ENDPOINT_URL = 'TCP://SQLSRVTST2.<domain>:7022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = AUTOMATIC
);
GO


数据库级别的健康监控

在之前的AlwaysOn 2012和2014中,如果实例健康出现问题,将触发故障转移。如果有一个数据库有问题,只要实例OK,可用性组就不会故障转移。因此,如果你有一个数据库掉线、异常或损坏,也不会触发故障转移。

在AlwaysOn 2016中,不论是一个实例有问题,还是一个或多个数据库有问题,都会发生故障转移。然而,这不是默认设置。在创建可用组配置向导,你可以选择“Database Level Health Detection”复选框来指定。对应的创建可用性组的参数为DB_FAILOVER = ON

AlwaysOn 2016 新特性和提升

对于什么情况下触发数据库故障转移,你也可以调整FailureConditionLevel属性设置。根据需要调整默认值。可以参考:https://msdn.microsoft.com/en-us/library/ff878667.aspx


支持组管理的服务账号

在SQL Server 2012,微软添加了组管理的服务账号增强,以便服务账号密码可以更容易管理。你现在可以为你的SQL Server实例创建一个独立的服务账号,在AD中管理密码、分配代理权限给每个服务器。这个特性对AlwaysOn AG是有用的,因为密码和访问特定资源像共享文件的权限,可以通过一个账号管理,而不是每个实例独立配置。在AlwaysOn AG中使用组管理的服务账号比使用通常的域用户账号更加安全

参考:

https://docs.microsoft.com/en-us/windows-server/security/group-managed-service-accounts/group-managed-service-accounts-overview

https://blogs.msdn.microsoft.com/markweberblog/2016/05/25/group-managed-service-accounts-gmsa-and-sql-server-2016/


基本可用性组

AlwaysOn基本可用性组在SQL Server 2016标准版中可用。功能与数据库镜像一样,而数据库镜像已经被废弃,会在将来的版本中被移除。基本可用性组提供了单个数据库的故障转移,在组内只可以有两个副本,数据同步可以是同步或异步模式,在辅助副本不提供只读访问和备份支持。创建基本可用性组,可以使用CREATE

AVAILABILITY GROUP语句带有WITH BASIC从句。
CREATE AVAILABILITY GROUP BAGSQL2016
WITH (AUTOMATED_BACKUP_PREFERENCE = PRIMARY,
BASIC,
DB_FAILOVER = OFF,
DTC_SUPPORT = NONE)
FOR DATABASE [Database1, Database2, Database3]
REPLICA ON
'SQLSRVTST1' WITH -- substitute node name
(
ENDPOINT_URL = ‘TCP://SQLSRVTST1.<domain>.com:5022’,
FAILOVER_MODE = AUTOMATIC,
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
SECONDARY_ROLE (ALLOW_CONNECTIONS = NO)
),
'SQLSRVTST2' WITH -- substitute node name
(
ENDPOINT_URL = ‘TCP://SQLSRVTST2.<domain>.com:5022’,
FAILOVER_MODE = AUTOMATIC,
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
SECONDARY_ROLE (ALLOW_CONNECTIONS = NO)
)
GO

参考:

https://blogs.technet.microsoft.com/msftpietervanhove/2017/03/14/top-5-questions-about-basic-availability-groups/


无域可用性组

注:只可运行在Windows Server 2016上

大多数公司运行在单一域环境,而有些公司运行在多个域环境,可以部署跨多个域的可用性组,以便多台服务器可以作为DR副本。而有些组织根本没有运行在域环境。

Windows Server 2016中,WSFC不需要集群节点在相同的域,或者根本不需要域(可以在工作组)。SQL Server 2016现在可以在以下环境部署AlwaysOn可用性组:

  • l 所有节点在单一域

  • l 节点在多个完全信任的域

  • l 节点在多个不信任的域

  • l 节点不在域中

通过去掉集群的域约束,提升了灵活性。参考:https://blogs.msdn.microsoft.com/clustering/2015/08/17/workgroup-and-multi-domain-clusters-in-windows-server-2016/


分布式可用性组

分布式可用性组,可将AlwaysOn AG跨两个不同的WSFC,来扩展AG。

分布式 AG 也是另一种迁移到新配置或升级 SQL Server 的方法。 因为分布式 AG 在不同体系结构上支持不同的基础 AG,例如,可以从在 Windows Server 2012 R2 上运行的 SQL Server 2016 更改为在 Windows Sever 2016 上运行的 SQL Server 2017。

AlwaysOn 2016 新特性和提升

参考:

https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups


支持加密数据库

在之前版本AlwaysOn允许加密数据库,然而他们不能通过新建可用性组添加,并且如果切换到辅助副本他们不能被访问。在SQL Server 2016,可以通过向导添加加密数据库,并且在故障转移后可以访问。这是因为,在创建可用性组时,向导对于每个副本执行了sp_control_dbmasterkey_passWord,并且使用每个实例的数据库主秘钥创建了凭据。在故障转移后SQL Server会搜索正确的凭据,知道可以解密数据库主秘钥。


关于添加加密数据库到AlwaysOn可用性组有些限制。参考:https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/encrypted-databases-with-always-on-availability-groups-sql-server?view=sql-server-2017


支持SSIS目录

在SQL Server 2016,你可以像其它数据库一样,为了增强高可用和灾难恢复,添加SSIS目录(SSISDB)和它的内容(项目、包等)到AlwaysOn可用性组。


对于添加SSISDB到AlwaysOn可用性组有些特定的先决条件和配置,参考:https://docs.microsoft.com/en-us/sql/integration-services/catalog/ssis-catalog?view=sql-server-2017#always-on-for-ssis-catalog-ssisdb


BI增强

使用AlwaysOn可用性组,数据库仓库负载指向一个或者多个可读辅助副本,而主副本用于支持关键业务应用。报表和数据分析是资源密集型应用,因此负载指向非生产服务器可以提高整体性能。另一个增强点是,微软优化了数据同步进程,在数据仓库数据同步延时非常低,以致近实时分析成为现实。


结论

最新版的AlwaysOn可用性组提升了功能性、可扩展性、可管理性,并在高可用和灾难恢复上更加健壮。


您可能感兴趣的文档:

--结束END--

本文标题: AlwaysOn 2016 新特性和提升

本文链接: https://www.lsjlt.com/news/44414.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • AlwaysOn 2016 新特性和提升
    AlwaysOn 2016 新特性和提升AlwaysOn可用性组作为SQL Server 2012的新特性被引入,它增强了数据库镜像和故障转移集群技术,提供了高可用和灾难恢复。在SQL Server 201...
    99+
    2022-10-18
  • AlwaysOn 2017 新特性和提升
    AlwaysOn 2017 新特性和提升AlwaysOn 2017一些新特性和增强:l 可用性组参数配置:最小提交辅助副本数(REQUIRED_COPIES_TO_COMMIT)l 读取缩放可用性组(Rea...
    99+
    2022-10-18
  • Project Server 2016 新特性
    从 IT Pro的角度, Project 2016 主要有如下一些新的特性:资源预订资源预订是 Project Server 2016 中的一项新功能,有助于项目经理和资源经理就与项目相关联的特定资源的具体...
    99+
    2022-10-18
  • Android13新特性之通知权限提升
    Android13新特性之通知权限提升 随着移动通信的高速发展,保障通信的安全性变得尤为重要。在Android 13的最新版本中,通知权限的管理得到了进一步加强。为了实现安全的通信和确保用户的隐私,...
    99+
    2023-09-26
    android
  • Java 21性能提升,会推出什么新特性?
    本文探讨Java 21值得期待的关键更新点。 微信搜索关注《Java学研大本营》 Java 20为我们带来了革命性的改进,现在我们一起揭开Java 21的面纱,探索一下它有哪些主要更新,并带来了哪些新特性: 1 更快的启动时间 ...
    99+
    2023-09-29
    java python 开发语言
  • SQL Server 2022 AlwaysOn新特性之包含可用性组详解
    目录1 如何创建包含可用性组?2 如何使用包含可用性组?3 元数据同步验证3.1 用户、登录名和权限3.2 链接服务器3.3 SQL代理作业4 包含可用性组总结SQL Server的...
    99+
    2023-05-18
    SQL Server 2022 AlwaysOn  SQL Server 2022可用性
  • SQL Server 2022 AlwaysOn新特性之包含可用性组详解
    目录1 如何创建包含可用性组?2 如何使用包含可用性组?3 元数据同步验证3.1 用户、登录名和权限3.2 链接服务器3.3 SQL代理作业4 包含可用性组总结SQL Server的容灾功能一直弱于oracle和mysq...
    99+
    2023-04-28
    SQL Server 2022 AlwaysOn SQL Server 2022可用性
  • MySQL 8.0.2 新特性 UNDO表空间管理的灵活性提升
    一篇自己翻译的文章,原文来自MySQL Server官方团队博客: 原文链接:http://mysqlserverteam.com/mysql-8-0-2-more-flexible-undo-tables...
    99+
    2022-10-18
  • 聊聊CSS新特性content-visibility,助你提升页面渲染性能
    visible:默认值,没有效果。元素的内容被正常布局和呈现。hidden:元素跳过它的内容。跳过的内容不能被用户代理功能访问,例如在页面中查找、标签顺序导航等,也不能被选择或聚焦。这类似于给内容设置display: none。auto:该...
    99+
    2022-11-22
    css
  • AndroidStudio升级到3.0的新特性和注意事项有哪些
    这篇文章主要介绍AndroidStudio升级到3.0的新特性和注意事项有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 概述谷歌发布Android Studio3.0正式版已经有一段时间了,最近抽空升...
    99+
    2023-05-30
    android studio android
  • Java 21 新特性和改进
    Java 21 是 Java 17 之后的下一个 LTS 版本。虚拟线程在 Java 21 中将成为正式功能。可以预期的是,Java 21 会成为一个很流行的 Java 版本。 Java 21 将在 2023 年 9 月 19 日发布。目...
    99+
    2023-09-21
    java jvm 开发语言
  • MySQL 8.0新特性之INTERSECT和EXCEPT
    最近几年,MySQL 不断致力于兼容 SQL 标准。例如 MySQL 8.0 中的窗口函数、通用表表达式、检查约束等等。 最新发布的 MySQL 8.0.31 继续对 SQL 语句进行了增强,提供了缺失已久的两个集合操作符:INTERSEC...
    99+
    2023-09-01
    mysql 数据库
  • MySQL5.7新版本的运维,性能和新特性介绍
    运维 在线启停GTID 在线配置Replication Filter,无需重启 Change Master到另外一个主库无需停止apply线程 Change Master修改一些日志apply属性(例如ma...
    99+
    2022-10-18
  • Windows 10 Build 10130怎么快速升级? 新增特性汇总
    本周早些时候Windows Insider项目负责人Gabriel Aul在推文中透露公司正在测试最新的Windows 10版本,而今天微软宣布Fast Ring用户已经可以下载版本号为10130的最新版本,这离上次10...
    99+
    2023-06-15
    win10 10130 特性
  • win8系统如何关闭视觉特效提升性能
    这篇文章主要介绍win8系统如何关闭视觉特效提升性能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!鼠标右键点击计算机,选择属性。在系统窗口中,点击高级系统设置。在系统属性窗口中,切换到高级选项,点击设置。然后在性能选...
    99+
    2023-06-28
  • UITableView性能提升和优化(第
    接上一篇翻译的内容。再次运行测试在重用cell之后,你可以再一次测试滚动性能。从表格3-3可以看出,在你正确重用cell之后,性能提升了一倍。表格 3-3 重用cell之后测试的结果结果显示你的做法是正确的;但是,现在的性能依然不够好。你总...
    99+
    2023-01-31
    性能 UITableView
  • h5和css3的新特性有哪些
    h5和css3的新特性有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 h6新特性:拖拽释放A...
    99+
    2022-10-19
  • JavascriptES6新特性之map和reduce详解
    目录说明1.map()代码示例:2.reduce()代码示例:综合案例总结说明 ES6中,数组新增了map和reduce方法。 1.map() map() :接收一个函数,将原数组中...
    99+
    2022-11-13
  • JDK 8 和 JDK 17 的区别和新特性
    JDK 8 和 JDK 17 的区别和新特性 背景介绍JDK 8 的新特性JDK 17 的新特性JDK 8 和 JDK 17的代码对比示例Lambda表达式Pattern Matching for instanceof新增的库新的集...
    99+
    2023-08-17
    java jvm 开发语言
  • 浅谈oracle 12C的新特性-CDB和PDB
    最近看到好多人都在尝试oracle中的12C新特性-容器数据库,今年3月orcle推出了Release2版本,可以算是一个稳定版本了。下午着手尝试了一下,还是蛮不错得1.前言CDB与PDB是Oracle&n...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作