sql server高可用_sql server的优缺点

sql server高可用_sql server的优缺点从SQLServer 2012以后微软推出了新的SQLServer高可用技术 ,它的名字叫AlwaysOn。
AlwaysOn是一种集合了高可用性和灾难恢复两种功能于一体的技术,相比故障转移群集、数据

SQLServer高可用方案在企业生产环境的实践

1、SQLServer高可用方案企业选型

 

SQLServer高可用介绍:

sql server高可用_sql server的优缺点

 

 

SQLServer以前的高可用方案:

数据库镜像、复制订阅、HA(故障转移群集)

 

sql server高可用_sql server的优缺点

 

SQLServer现在的高可用方案:

AlwaysOn

sql server高可用_sql server的优缺点

 

 

从SQLServer 2012以后微软推出了新的SQLServer高可用技术 ,它的名字叫AlwaysOn。

AlwaysOn是一种集合了高可用性和灾难恢复两种功能于一体的技术,相比故障转移群集、数据库镜像和复制订阅拥有许多优势,所以现在这种高可用方案被企业广泛的应用于生产环境中。

2、SQLServer高可用架构AlwaysOn企业实践

 

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

 

现在的 SQLServer 2014 AlwaysOn、SQLServer 2016 AlwaysOn最多可以支持9个副本,但只有一个可用性副本上运行的数据库是处于可读写状态。

 

 

AlwaysOn是一种整库同步的技术,所有的成员服务器都维护一套相同的数据库副本。当主副本上的数据发生变化时,数据会实时同步到辅助副本上。这点与数据库镜像非常类似。

下图详细描述了AlwaysOn数据同步的整个过程,我们先来看看每个步骤所代表的意义。

sql server高可用_sql server的优缺点

 

 

① 主副本的logwriter把事务修改的日志信息先记入一段内存中的日志缓冲区,然后再写入物理日志文件(日志固化);

② 主副本的logscanner从缓存中或者日志文件中读取日志块,然后把它发送给AlwaysON的日志块解码器;

③ 主副本将日志块通过网络传送给辅助副本;

④ 和⑤

辅助副本接受到日志块后,logwriter把事务修改的日志信息先记入一段内存中的日志缓冲区,然后再写入物理日志文件(日志固化),另外,如果辅助副本处于同步可用模式时,在日志固化后,还必须反馈信息给主副本,主副本在接受到辅助副本完成固化的消息后才可以提交该事务,如果辅助副本在异步可用模式或者主副本在异步模式下,主副本提交事务与否跟辅助副本是否完成日志固化没有关系,下文在介绍可用模式时会详细介绍;

⑥重做(Redo)线程将日志中记录的事务在辅助副本上重新演绎。重做线程每隔固定的时间点,会跟主副本通信,告知它自己的工作进度。主副本就能够知道两边数据的差距有多远。

 

AlwaysOn分为同步提交和异步提交模式,同步提交模式下的副本可以用于故障转移(高可用),异步提交模式下的副本一般作为只读副本和容灾。

下图显示的是具有五个可用性副本的可用性组。主副本和一个辅助副本配置为使用同步提交模式以及自动故障转移。 另一个辅助副本配置为使用同步提交模式且仅限计划的手动故障转移,两个辅助副本配置为使用异步提交模式,其仅支持强制手动故障转移(一般称为“强制故障转移”)。

sql server高可用_sql server的优缺点

 

 

两个可用性副本之间的同步和故障转移行为取决于这两个副本的可用性模式。例如,对于要发生的同步提交,涉及的当前主副本和辅助副本必须配置为同步提交。同样,对于要发生的自动故障转移,需要将这两个副本配置为自动故障转移。

因此,上述部署方案的行为可用下表概括,它揭示了每个潜在主副本的行为:   

sql server高可用_sql server的优缺点

 

 

通常,节点 04 在灾难恢复站点中作为异步提交副本部署。事实上,由于两个节点之间的高网络延迟,在故障转移到节点 04 后节点 01、02 和 03 仍处于异步提交模式,这帮助防止潜在的性能下降。

故障转移场景可见下图:

sql server高可用_sql server的优缺点

 

 

在主副本变得不可用之后,自动故障转移将导致合格的辅助副本自动转换为主角色。 当承载主副本的 WSFC 节点对于承载辅助副本的节点而言为本地节点时,自动故障转移最适合。 这是因为数据同步最适合于计算机之间的低消息延迟时间情况以及因为客户端连接可以保持为本地。

在数据库管理员针对承载目标辅助副本的服务器实例发出手动故障转移命令后,手动故障转移将导致已同步的辅助副本转换为主角色。

强制故障转移会启动一个将主角色转换为角色处于辅助或正在解析状态的目标副本的过程。故障转移目标成为新的主副本,并立即将其数据库副本提供给客户端。当以前的主副本变得可用时,它将转换为辅助角色,并且其数据库将成为辅助数据库。

对可用性组强制进行故障转移(可能丢失数据)是一种灾难恢复方法,使您能够将辅助副本用作温备用服务器。因为强制故障转移存在数据丢失的风险,所以应该谨慎使用。 建议仅当您必须立即将服务还原到可用性数据库并愿意承担数据丢失的风险时,才执行强制故障转移。

 

对于数据量未达TB级别以上的公司而言, SQLServer的AlwaysOn无疑是一个不错的数据库高可用解决方案。

即使数据量达到了TB级别以上, SQLServer的AlwaysOn也可以辅以其他中间件和缓存来实现整体的数据库解决方案。

 

本文来自思创斯聊编程,作者:古道轻风,转载请注明原文链接:https://www.cnblogs.com/88223100/p/Practice_of_SQL_Server_High_Availability_Solution_in_Enterprise_Production_Environment.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5548.html

(0)
上一篇 2023-05-04
下一篇 2023-05-04

相关推荐

  • 国产自研、安全、高可用——袋鼠云大数据基础平台EasyMR筑基企业数字化转型[亲测有效]

    国产自研、安全、高可用——袋鼠云大数据基础平台EasyMR筑基企业数字化转型[亲测有效]近年来,国际形势的风云变幻,中美双边关系的恶化,自2013年“棱镜门”事件之后,又一次警示国人,对于科技领域,只有自己掌握核心关键技术,实现自主可控,才能摆脱越来越频繁的“卡脖子事件”,保证企业和国家

    2023-06-18
    156
  • sql2005iis未安装有没有影响_sql安装18个不适用跳过

    sql2005iis未安装有没有影响_sql安装18个不适用跳过 【0】什么叫静默安装 其实就是用命令提示符 使用参数文件 或直接代码参数的方式安装,这样就不需要人一直点下一步下一步了 【1】静默安装 官网参考:https://docs.microsoft…

    2023-03-25
    154
  • MySQL 前缀索引[通俗易懂]

    MySQL 前缀索引[通俗易懂]索引前缀 使用 字符串列的索引规范中的语法,您可以创建仅使用列首字符的索引 。以这种方式仅索引列值的前缀可以使索引文件小得多。为a 或 column 编制索引时 , 必须为索引指定前缀长度。例如: c

    2023-03-15
    143
  • Python字典:高效存储和快速查找数据的利器

    Python字典:高效存储和快速查找数据的利器Python是一种高级编程语言,它的数据结构——字典(Dictionary)被广泛应用于各种场景。字典是一种类似于哈希表的数据结构,是一种由键(Key)和值(Value)组成的可变集合。Python字典使用哈希表来存储和查找元素,因此,它是一种高效的存储和快速查找数据的利器。

    2024-02-26
    122
  • MySQL第七天[亲测有效]

    MySQL第七天[亲测有效]2022-09-09 1、左连接查询(left join) 查询条件的一种,以左表为主根据条件查询右表数据,如果根据条件查询右表数据不存在null值填充。 以“students表(id,name,ag

    2023-06-04
    150
  • Python:编写高效易读的代码

    Python:编写高效易读的代码Python是一种非常流行的编程语言,许多开发人员喜欢使用Python,因为它的语法简单易懂,可以帮助他们快速地编写代码。但当我们开始编写大型应用程序时,代码质量变得极为重要。我们需要编写高效易读的代码,以便我们能够轻松地维护和扩展应用程序。在这篇文章中,我们将介绍一些编写高效易读代码的方法和技巧。

    2024-02-20
    103
  • oracle一次添加几十万数据_oracle批量更新百万数据

    oracle一次添加几十万数据_oracle批量更新百万数据方法:开并行、不产生日志。 insert /*+ append parallel(10) nologging */ into goal_tabname select /*+ append paral…

    2023-03-27
    152
  • 使用PyCharm批量注释代码

    使用PyCharm批量注释代码在写代码的过程中,注释是一个非常重要的环节,更好的注释可以提高代码的可读性,让其他开发者更容易理解代码,更快速地上手。但是,在已经写好的代码中添加注释是一件让人十分头痛的事情。这时,使用PyCharm批量注释代码就可以省去这些麻烦。

    2024-08-27
    30

发表回复

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