首页 > 数据库

SQL Sever AlwaysOn的数据同步原理

2018-10-25 02:01:25

SQL Sever AlwaysOn的数据同步原理 - 东山絮柳仔 - 博客园

1. SQL Server AlwaysOn数据同步基本工作 AlwaysOn 副本同步需要完成三件事: 1.把主副本上发生的数据变化记录下来。 2.把这些记录传输到各个辅助副本...

SQL Server AlwaysOn架构及原理-杜飞-51CTO博客

SQL Server AlwaysOn架构及原理 杜飞 SQL Server2012所支持的AlwaysOn技术集中了...AlwaysOn必须要维护各副本间的数据一致性,当主副本上的数据发生变...

镜像amp;AlwaysOn复制的工作原理 - dreamyuzhou的专栏 - CSDN博客

镜像的工作原理: 那么主体数据库和镜像数据库是如何同步数据的呢? SQL数据库中...对于配置为AlwaysOn主副本的数据库,SQL Server会为它建立一个叫Log S...

...的原理及可用模式_程序员_数据库技术_非百站新闻_SQL Server_...

AlwaysON同步的原理及可用模式 来源:博客园 2014-12-03 新一代读写分离技术——AlwaysOn 早在SQL Server 2005的时候微软就已经实现了数据库的查询分离...

SQL Server AlwaysOn架构及原理_百度文库

SQL Server AlwaysOn 架构及原理 SQL Server2012 所支持的 AlwaysOn 技术集中了...会不 断地将主数据库上的数据变化发送到辅助副本,来实现副本间的数...

SQL Server 2012 AlwaysOn 能实时同步数据库吗? - SQL Server论坛...

9条回复nbsp;-nbsp;发帖时间:nbsp;2016年11月16日谁能确认SQL Server 2012 AlwaysOn 能实时同步数据库吗? 网工1.0-2.0进阶指南...可以实现实时同步。使用同步模式即可。 同步实现的原理是,事务提交后...

SQL Server AlwaysOn架构及原理 - CSDN博客

   SQL Server2012所支持的AlwaysOn技术集中了故障转移群集、数据库镜像和日志...AlwaysOn必须要维护各副本间的数据一致性,当主副本上的数据发生变...

SQL Server Alwayson概念总结 - pursuer.chen - 博客园

SQL Server Alwayson概念总结2017-10-24 10:00 by...主数据库与每个连接的辅助数据库独立进行数据同步。 ...五、alwayson同步原理 1.任何一个SQL Serv...

SQL Server 2012 AlwaysOn 能实时同步数据库吗?-CSDN论坛

想缓解下性能的问题,把数据库的读写分开,查询时就只读备份的数据库。但是,没有任何一个地方说,SQL Server 2012 AlwaysOn已经实现了数据库的实时同步(...

AlwaysOn 同步提交模式是否会丢失数据?-SQL Server Deep Dive-51...

同步情况下丢失数据有两种情况:一种是阻塞丢失,一种是同步失败。 给出的处理法...alwayson 同步提交 SQL Server 管理 1 分享 微博 QQ 微信 收藏...

遇到Sql Server 2012 AlwaysOn的同步事务传输问题 - Bl..._CSDN博客

更新,相同的就不要更新了,AlwaysOn改为异步事务传输,修改了Sql Server的线程池线程数量上限(AlwaysOn使用线程池线程做同步),数据库太多需要更多的线程...

SQL Server 2012 AlwaysOn 能实时同步数据库吗_百度知道

1个回答 - 回答时间: 2017年11月3日

SQLServer 2012 Alwayson 是否能实现热备 SQL Server2012所支持的AlwaysOn技术集中了故障转移群集、数据库镜像和日志传送三者的优点,但又不相同。故障转移...更多关于SQL Sever AlwaysOn的数据同步原理的问题gt;gt;

SQL Server 2012 AlwaysOn 可用性组配置完成后,如何调整同步数据...

2012 SP1 的 AlwaysOn部署有点怪,偶手动全备份同步数据就不行,用向导OK。。不知2014出来会不会改进下 也或者漏了啥指令??? Try SQL Server 2008 QQ:3...

Sqlserver查询alwayson同步情况脚本_ITPUB博客

Sqlserver查询alwayson同步情况脚本 原创 SQL Server 作者:ywxj_001 时间:2017-10-25 00:29:59 0 删除 编辑 SELECT availability_mode_desc , role_de...

SQLServer 2012之AlwaysOn —— 指定数据同步..._动态网站制作指南

SQLServer 2012之AlwaysOn —— 指定数据同步链路,消除网络抖动导致的提交延迟问题 事件起因:近期有研发反应,某数据库从08切换到12环境后,不定期出现...

SQL Server 2016 Alwayson新增功能图文详解_MsSql_脚本之家

在2016之前只能针对整个副本进行状态监测,如果有多个数据库进行同步其中一...以上所述是小编给大家介绍的SQL Server 2016 Alwayson新增功能图文详解,...

SQL Server AlwaysON从入门到进阶(6)分析和部署AlwaysOn ...

AlwaysOn可用组(下称AG)是将数据库的全部内容复制到一组预定义的SQL Server伙伴...原理是什么? 在这个测试中,把可用性组全部设为非自动故障转移模式,...

遇到Sql Server 2012 AlwaysOn的同步事务传输问题 - 阿里云

新版的SqlServer提供了AlwaysOn技术为高可用性系统提供了极大的便利,而且可以实现我们以前需要花很多工作实现的读写分离机制,我们当然受不了诱惑,去尝...

SQLServerAlwaysOn中的几个误区 - SQL Server(mssql)数..._红黑联盟

AlwaysOn自SQL Server2012之后已经发布很久了,最近我在给一些客户做咨询的...图2.对等复制拓扑 分布式视图 简单理解,分布式视图就是将数据分布到多个...

alwayson-Sql Server Always On 同步复制疑难——CSDN问答频道

配置了sql server always on环境。建立了同步复制,01为主副本,配置了发布,并...关于sql server 发布 订阅 同步数据的详细教程。。 基于SQL Server 200...2017国庆节怎么放假?国庆节放几天假?30余国家地区禁寄月饼 部分采取限制措施什么时候去凤凰古城最好?“最能卖萌”的野生北极熊宝宝 会站立懂作揖中秋夜广州最佳赏月时刻:23时58分慈禧曾认为“月饼”说法不雅 改名为“月菜糕”北京出发去刚果民主共和国旅游 北京出发去刚果民主共和国旅游 北京出发去刚果民主共和国旅游 北京出发去刚果民主共和国旅游 北京出发去刚果民主共和国旅游 北京出发去刚果民主共和国旅游 北京出发去哥伦比亚旅游 北京出发去哥伦比亚旅游 北京出发去哥伦比亚旅游 北京出发去哥伦比亚旅游 北京出发去哥伦比亚旅游 北京出发去哥伦比亚旅游 北京出发去哥斯达黎加旅游 北京出发去哥斯达黎加旅游 北京出发去哥斯达黎加旅游 北京出发去哥斯达黎加旅游 北京出发去哥斯达黎加旅游 北京出发去哥斯达黎加旅游 北京出发去歌诗达邮轮公司旅游 北京出发去歌诗达邮轮公司旅游 北京出发去歌诗达邮轮公司旅游 北京出发去歌诗达邮轮公司旅游 北京出发去歌诗达邮轮公司旅游 北京出发去歌诗达邮轮公司旅游

1. SQL Server AlwaysOn数据同步基本工作

AlwaysOn 副本同步需要完成三件事:

1.把主副本上发生的数据变化记录下来。

2.把这些记录传输到各个辅助副本。

3.把数据变化在辅助副本上同样完成一遍。

这3件工作主要由以下4个线程完成

Log Writer线程:当任何一个SQL用户提交一个数据修改事务时,它会负责把记录本次修改的日志信息先记入一段内存中的日志缓冲区,然后再写入物理日志文件(日志固化)。

Log Scanner工作线程:位于主副本所在SQL Server上。这个线程专门负责将日志记录从日志缓冲区或者日志文件里中读出,打包成日志块,发送给各个辅助副本。由于它的不间断工作,才使主副本上的数据变化,可以不断地向辅助副本上传播。

固化(Harden)线程重做(Redo)线程:位于辅助副本所在的SQL server上。固化线程会将主副本Log Scanner所发过来的日志块写入辅助副本的磁盘上的日志文件里(这个过程被称为"固化")。而重做线程,则负责从磁盘上读取日志块,将日志记录翻译成数据修改操作,在辅助副本的数据库上完成。

这些线程在工作上各自独立,以达到更高的效率。Log Scanner负责传送日志块,而无须等待Log Writer完成日志固化;辅助副本完成日志固化以后就会发送消息到主副本,告知数据已经传递完毕,而无须等待重做完成。其设计目标,是尽可能地减少AlwaysOn所带来的额外操作对正常数据库操作的性能影响。

AlwaysOn的数据同步有可分为异步提交和同步提交

2. AlwaysOn同步提交模式

在同步提交模式下由可分为 辅助副本发出同步请求和主副本发出同步请求。

2.1 辅助副本发出同步请求

此情况,主要发生在辅助副本刚刚加入可用性组、或者网络等原因主副本出现差异、或者辅助副本出现脏页(物理)等少数情况下。

 

 

步    骤

行    为
1.连接辅助副本通过主副本的镜像端点建立两者之间的连接。
2.请求数据

辅助副本发出一个请求到主副本,要求主副本发送日志块。辅助副本和主副本

会协商出一个日志块的LSN初始位置以及一些其他的信息。

3.运行Log Scanner

在主副本上,Log Scanner的工作线程开始工作。Log Scanner负责将日志块

传送到辅助副本。

4.固化和重做日志

辅助副本会使用固化(Harden)线程和重做(Redo)线程的工作线程来处理

Log Scanner发送过来的日志块,固化线程将日志块固化到辅助副本的磁盘上

,而重做线程负责将日志中记录的事务在辅助副本上重新演绎。

5.反馈进度

每当辅助副本收到3条来自主副本的消息的时候,就把固化和重做的进度作为

一个消息返回给主副本。如果超过1秒还没收到3条消息,进度消息也会被返回。

反馈到主副本的消息里包含了哪些LSN已经在辅助副本上被重做和固化。

 

2.1 主副本发出同步请求,即客户端提交SQL请求触发的同步请求

 

 

步    骤 行    为 
1.提交事务在主副本上运行COMMIT TRAN命令来提交事务.

2.写入到本
地日志记录

在主副本上,COMMIT TRAN命令会被写成一条日志记录(此时记录还在主数据库的日志缓存中).

然后主副本上的log writer工作线程会把直到COMMIT命令为止的所有日志记录组成一个日志块

从缓存写入到磁盘上的LDF文件中。当日志被写入到磁盘之后,主数据库就开始等待来自辅助副本

的消息来确认日志在辅助数据库上被成功写入磁盘。在这之前,该事务提交操作会保持等待。

3.扫描日志

当日志块开始被从缓存写入到磁盘上时,它也会发信号给Log Scanner工作线程,告诉

Log Scanner“日志已经准备好了,可以被发送到辅助副本上”。Log Scanner从缓存中取出

日志块,把它发送给AlwaysOn的日志块解码器(Log Block Cracker)。解码器会搜索日志

中那些需要特别处理的操作,比如file stream操作,文件增长等。解码器会把这些操作作为

一个消息发送给辅助副本。一旦日志块被解码完毕,整个日志块也会被作为消息发送给辅助副本.

4.处理日志块消息

日志块消息在辅助副本上得到处理。固化线程负责将日志固化到磁盘上。然后日志被保存到辅助

数据库的日志缓存中,重做线程从缓存中获得日志块并开始执行重做操作.

5.反馈进度

每当辅助副本收到3条来自主副本的消息时,就把固化和重做的进度作为一个消息返回给主副本。

如果超过1秒还没收到3条消息,进度消息也会被返回。进度信息中包含当前哪些LSN被固化了,

哪些LSN已经被重做了。由于重做线程晚于固化操作启动,被固化的LSN可能会多于被重做的LSN.

6.完成提交主数据库受到了辅助副本来的确认消息,完成事务提交处理并向客户端发送一条确认消息.

 

2. 补充说明

  1. 在同步提交模式下,日志块必须在主副本和辅助副本上都被固化到磁盘上,事务才能真正在主数据上提交。但是它并不要求日志在辅助副本上完成重做,这样可以减轻对主副本的性能影响。
  2. 进入DISCONNECTED或"NOT SYNCHRONIZING"状态后,即使可用性副本处于同步提交模式,事务也不需要等待该副本的响应就可以在主副本上提交。
  3. 如果为当前主副本配置了异步提交可用性模式,则它将通过异步方式为所有辅助副本提交事务,而不管这些副本各自的可用性模式设置如何。
  4.   它可以保证事务日志是同步的,也就是可以保证不丢失数据,但不能保证数据变化没有延时,这是由于辅助副本在接收主副本传来的Trans log时,首先将其缓到本地Log Cache,接着强制硬化到本地Ldf,然后随即向主副本告知你可以commit了,但注意,此时的硬化到本地ldf并非本地数据已经变化,这是因为辅助副本将trans log硬化到本地的同时,它是使用一个异步进程去redo这些trans log产生的Page变化到Data文件的,所以数据的延时就是肯定的了。

3.AlwaysOn异步提交模式

 

 

部分内容参照书籍《SQL Server 2012 实施与管理实战指南》,感谢原作者。

相关文章