SQL SERVER-Alwayson原理
流程

1.异步提交模式
主副本无须确认该副本已经完成日志固化,就可提交事务。
主副本不受辅助副本的影响
辅助副本上的DB处于SYNCHRONIZING
2.同步提交模式
主副本要确认副本已经完成日志固化,才可提交事务。
| 步骤 | 行为 |
| 1.提交事务 | 在主副本上运行COMMIT TRAN命令来提交事务 |
| 2.写入到本地日志记录 |
在主副本上,COMMIT TRAN 命令会被写成一条日志记录(此时记录还在主数据库的日志缓存中)。 然后主副本上的log writer工作线程会把直到COMMIT 命令为止的所有日志记录组成一个日志块从缓存写入到磁盘上的LDF文件中。 当日志被写入到磁盘之后,主数据库就开始等待来自辅助副本的消息来确认日志在辅助副本上被成功写入磁盘。在这之前,该事务提交操作会保持等待。 |
| 3.扫描日志 |
当日志开始被从缓存写入到磁盘上时,他也会发信号给Log Scanner工作线程,告诉Log Scanner"日志已经准备好了,可以被发送到辅助副本"。 Log Scanner从缓存中取出日志块,把它发送给alwayson的日志块解码器,一旦日志块被解码完毕,整个日志块也会被作为消息发送给辅助副本。 |
| 4.处理日志块消息 | 日志块消息在辅助副本上得到处理。固化线程负责将日志固化到磁盘上。然后日志被保存到辅助数据库的日志缓存中,重做线程从缓存中获得日志块并开始执行重做操作。 |
| 5.反馈进度 |
每当辅助副本收到3条来自主副本的消息时,就把固化和重做的进度作为一个消息返回给主副本。 如果超过1秒还没有收到3条消息,进度消息也会被返回。进度信息中包含了当前那些LSN被固化,哪些LSN被重做了。 由于重做线程晚于固化,所以被固化的LSN会多于被重做的LSN。 |
| 6.完成提交 | 主数据库收到了辅助副本发来的消息,完成事务提交并向客户端发送一条确认的消息。 |
名词解释
连接状态
DISCONNECTED
主副本与辅助副本之间 ping 消息如超时则连接进入DISCONNECTED,
1.如果主副本发现辅助副本断开了和它的连接,在主副本上会将那些辅助副本上的辅助数据库标记为未同步,主副本等待辅助副本重新连接。
2.当辅助副本检测到它和主副本的连接断开后,辅助副本会尝试重新连接主副本。
CONNECTION
辅助副本和主副本间连接正常
可用性副本状态
可用性副本角色:primary ,secondary,resolving
resolving:既不是主副本也不是辅助副本。
NOT SYNCHRONIZING
副本中有一个或多个数据库未同步或未连接到AG
Synchronizing
正在同步副本中的一个或多个数据库
Synchronized
辅助副本中的所有数据库都与主副本的数据库同步
可用性数据库状态
NOT SYNCHRONIZING
无论什么模式如果一个事务在辅助数据库上重做失败,就会导致辅助数据库进入SYNCHRONIZING状态,此时主副本事务直接提交,无须等待。
1.如果主数据库处于该状态,说明该数据库未做好准备将其事务日志与相应的辅助数据库进行同步。
2.如果是辅助数据库处于该状态,原因如下:
1.由于连接问题或者重做失败,不在进行日志同步。
2.和主数据库的日志同步被挂起
3.由于角色切换,正处于装换的中间状态
Synchronizing
1.如果主数据库处于该状态,说明该数据库已做好接受来自辅助数据库的同步请求的准备
2.如果是辅助数据库处于该状态,说明该辅助数据库和主数据之间有正在进行同步的数据
Synchronized
1.如果主数据处于该状态,说明他至少同步了一个辅助数据库
2.如果辅助数据库处于该状态,说明该数据库与相应的主数据库保持同步
SQL SERVER-Alwayson原理的更多相关文章
- SQL Server AlwaysOn原理简介
SQL Server2012所支持的AlwaysOn技术集中了故障转移群集.数据库镜像和日志传送三者的优点,但又不相同.故障转移群集的单位是SQL实例,数据库镜像和日志传送的单位是单个用户数据库,而A ...
- SQL Server AlwaysOn架构及原理
SQL Server AlwaysOn架构及原理 SQL Server2012所支持的AlwaysOn技术集中了故障转移群集.数据库镜像和日志传送三者的优点,但又不相同.故障转移群集的单位是SQL实例 ...
- 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目
最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目 最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水 ...
- SQL Server AlwaysON 同步模式的疑似陷阱
原文:SQL Server AlwaysON 同步模式的疑似陷阱 SQL Server 2012 推出的最重要的功能之一Alwayson,是一个集之前Cluster和Mirror于一体的新功能,即解决 ...
- 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)
从0开始搭建SQL Server AlwaysOn 第一篇(配置域控) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnb ...
- 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...
- 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...
- 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)
从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...
- (转) 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
原文地址: http://www.cnblogs.com/lyhabc/p/4682986.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第三篇,这一篇才真正开始搭建Alwa ...
- (转)从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
原文地址: http://www.cnblogs.com/lyhabc/p/4682028.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第二篇,主要讲述如何搭建故障转移集 ...
随机推荐
- matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象
一起来学matlab-matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matl ...
- windows10 卓越性能模式
打开cmd,输入 powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61 再到电池选项里,勾选卓越性能模式 若没出现卓越性能,创建 ...
- 【tensorflow基础】Tensorpack-API
安装 pip install tensorpack 使用 参考 1. Tensorpack: 2. Tensorpack,一个基于TensorFlow的神经网络训练界面,源码包含很多示例: 完
- 进程间之异步通信:信号Signal
信号 信号是进程间通信机制中唯一的异步通信机制:信号机制是进程间传递消息的一种机制,是异步进程中通信的一种方式 一个进程一旦接收到信号就会打断原来的程序执行流程来处理信号 内核处理一个进程收到的软中断 ...
- 阿里云使用Docker部署工单系统(redmine)
环境:阿里云服务器 Redmine安装部署 Redmine是用Ruby开发的基于web的项目管理软件,是用ROR框架开发的一套跨平台项目管理系统,据说是源于Basecamp的ror版而来,支持多种数据 ...
- Google深度学习开源框架TenseorFlow安装
Google近期发布了TensorFlow,考录到Google出品,必属精品,估计这玩意会火,不过火钳刘明已经来不及了 今天才想着安装来试试 TensorFlow官网:https://www.tens ...
- 图片url地址的生成获取方法
在写博客插入图片时,许多时候需要提供图片的url地址.作为菜鸡的我,自然是一脸懵逼.那么什么是所谓的url地址呢?又该如何获取图片的url地址呢? 首先来看一下度娘对url地址的解释:url是统一资源 ...
- MySQL数据库-表操作-SQL语句(一)
1. 数据库操作与存储引擎 1.1 数据库和数据库对象 数据库对象:存储,管理和使用数据的不同结构形式,如:表.视图.存储过程.函数.触发器.事件等. 数据库:存储数据库对象的容器. 数据库分两种 ...
- array_walk、array_map、array_filter 的用法
array_walk.array_map.array_filter 和 foreach 都有循环对数组元素进行处理的功能. 一.array_walk 用法 1.循环数组,回调处理(并不修改数组元素的 ...
- SAS学习笔记63 如何导出Log
如上,将Log输出,然后又恢复到SAS系统里面的Log,把需要运行的程序放到他们中间就可以了.这种方法不会出现Log打印满了的情况 这种是先输出在SAS系统里面,然后在输出,在SAS里面Log的行是有 ...