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

相关推荐

  • 数据库(mysql)基础操作「建议收藏」

    数据库(mysql)基础操作「建议收藏」声明: 1)仅作为个人学习,如有冒犯,告知速删! 2)不想误导,如有错误,不吝指教! 分隔符 DDL(数据定义语言) >建库,建表 DML(数据操作语言) >对表中的记录操作增删改查 DQ

    2023-03-12
    150
  • 企业级云数据库最佳实践[通俗易懂]

    企业级云数据库最佳实践[通俗易懂]云数据库 PostgreSQL 是京东智联云基于开源的 PostgreSQL构建的一款功能强大的企业级关系型数据库管理系统。加州大学计算机系开发的PostgreSQL,有“世界上可获得的最先进的开源…

    2023-02-25
    137
  • PostgreSQL中有以下格式化函数:[亲测有效]

    PostgreSQL中有以下格式化函数:[亲测有效]函数返回类型描述例子 to_char(timestamp, text) text 把时间戳转成字符串 to_char(current_timestamp, ‘HH12:MI:SS’) to_char…

    2023-03-31
    140
  • SQL 数字转为中文大写

    SQL 数字转为中文大写USE [SPECIAL_BLD]GO SET ANSI_NULLS ONGO SET QUOTED_IDENTIFIER ONGO CREATE FUNCTION [dbo].[get_upper]

    2022-12-21
    134
  • Python 制表符的使用

    Python 制表符的使用 Python 是一种高级编程语言,它的设计目的是为了让程序员更容易编写、阅读和维护代码。Python 可以使用制表符来表示代码的缩进,从而帮助程序员更好地组织代码。制表符在 Python 中是非常重要的,因为它们不仅是程序的可读性,而且还可以对程序的语义有所帮助。

    2024-08-09
    24
  • 提高Python程序性能的关键:多线程

    提高Python程序性能的关键:多线程并发编程是指在同一时间内执行多个任务的编程方式,它能够提高程序的效率和响应能力。而多线程是实现并发编程的一种常见机制,它可以让一个程序同时执行多个任务,从而提高程序的性能。

    2023-12-16
    109
  • Python字符串操作:实现文本替换功能

    Python字符串操作:实现文本替换功能Python中的字符串是不可变的,它们是一系列Unicode字符的序列。Python中的字符串类型是str,每个字符串都是由一些字符组成的。

    2023-12-09
    101
  • pdo 预处理_C语言中什么是预处理

    pdo 预处理_C语言中什么是预处理什么叫预处理语法 就是,为了“重复执行”多条结构类似的sql语句,而将该sql语句的形式“进行预先处理”(编译); 该sql语句的“形式”中,含有“未给定的数据项”。 然后,到正式执行的时候,只要给…

    2023-02-10
    157

发表回复

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