XenDesktop 5 SQL Server Mirror事务日志比较大的原因分析

在实施XenDesktop5项目过程中,发现XenDesktop5版本的数据库镜像事务日志很大,在XenDesktop4和XenApp版本中不存在该问题;于是我根据该现象探究XenDesktop5及以上版本镜像数据库事务日志为何如此之大以及我们今后实施的过程中该如何来维护这么庞大的数据库事务日志。

在XenDesktop解决方案中,对数据的处理是由专门的数据库来进行数据存储处理的,而对于数据库的高可用,有3种方式:

  • SQL Mirror
  • Virtual Machine HA(VMware FT)
  • SQL Cluster

根据我的探究, XenDesktop 4 及以上的版本和XenDesktop 5 的系统架构不同,是导致这2个版本Mirror事务日志不一样的原因。

在XenDesktop 4 版本中,属于Citrix IMA系统架构,MetaFrame XP是第一个使用思杰的独立管理架构( IMA )的Citrix产品。MetaFrame XP即是XenApp的前身。在IMA架构中,运行着2个协议,一个ICA,一个IMA,ICA协议用于远程连接桌面和应用,而IMA协议则用于执行功能,如许可和服务器负载的更新,所有的这些都发生在服务器与服务器之间,是隐于幕后的通信协议。因此可以这样说,ICA协议是该架构的前端显示协议,IMA是后端的幕后协议。此外,IMA服务与Citrix管理控制台进行通信,允许管理员管理和配置服务器。

那么IMA架构数据库的Mirror事务日志有何关系呢?

接下来我们就来探究下Citrix的IMA架构:

这就是XenDesktop 4的架构图

在图中我们会发现,每一台主机都会有LHC这么一个东西,LHC就是本地主机缓存的意思,在IMA架构中,XD4及以前的版本和XenApp都是典型的IMA架构的产品。IMA因为有这么一个LHC的存在,所有他的数据库事务日志不大。

在产生的数据中,分为静态的信息和动态的信息。

  静态配置信息会存储在DB数据库和LHC(Local Host Cache)中,包括Farm 配置信息,策略配置,用户和桌面组、桌面组和虚拟机的绑定关系等静态信息。

  动态会话信息会存储在本地的LHC中,不会更新到DB中。LHC即Imalhc.mdb(本地的磁盘文件),是一个Access database。动态信息包括虚拟机的注册状态、Session状态,license利用率等动态信息。

  而数据库的事务日志大部分是动态的会话信息,XenDesktop 4由于架构的原因,动态的会话信息不回写入数据库里面,之写入本地的主机缓存里,所以XenDesktop 4及以前的版本和XenApp数据库事务日志不回很大。

  那么为什么XenDesktop 5的事务日志很大呢?

  

XenDesktop 5 不再将 IMA 数据存储用作存储配置信息的中央数据库, 而是使用 Microsoft SQL Server 数据库作为配置信息和会话信息的数据存储。而且XenDesktop 5属于Citrix的FMA架构。FMA架构就没有本地主机缓存了,所有的数据信息全部写入数据库里面,包括静态的信息和动态的信息。

  

  由以上的描述,我们知道XD4和XD5在结构上发送了较大的变化,由IMA管理架构变成了FMA管理架构,如果说XD5只是对FMA管理架构的一种尝试的话,那么XD7就是完全的认同了这样一种管理架构,在新版本的XD7中,XenApp和XenDesktop融合在一起,Citrix完全的抛弃了XenApp和XD4的这种IMA管理架构,全部转向FMA管理架构。

而由此可知,Mirror数据库事务日志从XD5开始比较大的原因就在于:FMA管理架构没有本地主机缓存(LHC),所有的数据信息都会写入到数据库中,通过数据库内保存的数据进行同步。包括用户对桌面的每一次登录信息、断开连接的会话信息都会写到事务日志里面,而不像IMA架构那样,不会写入到数据库里,而是写入到本地主机缓存里边。

写到这里,我想我有必要补充,事务日志是什么?SQL Server使用事务日志来存储修改数据库。这是对数据库连续不断的类似于数据流一样的对数据库的存储和修改。一般我们的数据库文件如果损坏了话,通过事务日志就可以对它进行恢复。而在数据库高可用解决方案中,数据库镜像的高可用方式就靠事务日志来进行维系。

  由此我们大致明白了做数据库Mirror时为什么数据库日志那么大了吧,也明白了为什么XenApp的Mirror没有XenDesktop的Mirror事务日志那么大原因了吧。都是基于其架构设计的原因。

XenDesktop 5 SQL Server Mirror事务日志比较大的原因分析

时间: 2024-10-20 14:54:28

XenDesktop 5 SQL Server Mirror事务日志比较大的原因分析的相关文章

XenDesktop SQL Server Mirror事务日志维护

当使用SQL Server高可用性功能的时候,例如,XenDesktop站点数据库使用完整的事务日志记录模式下运行的数据库镜像. 通过完整的事务日志记录模式下运行的事务日志会增长过大,直到数据库空间被填满或事务日志空间大小被填满.如果事务日志文件不会被监视的,默认情况下,SQL Server的配置日志文件会自动增长.这将导致2个问题: 1.事务日志文件会占用大量的磁盘空间 2.事物日志增长填满数据库空间,导致数据库不可用. 因此Citrix建议定期备份日志文件.这可以通过调度作业或维护计划来完成

SQL Server中事务日志已满的原因以及解决办法

错误描述:数据库的事务日志已满.若要查明无法重用日志中的空间的原因 ,请参阅sys.databases 中的 log_reuse_wait_desc 列 . 首先引入一下事务日志的概念(来自百度百科): 事务日志是一个与数据库文件分开的文件.它存储对数据库进行的所有更改,并全部记录插入.更新.删除.提交.回退和数据库模式变化.事务日志还称作前滚日志或重做日志. 事务日志是备份和恢复的重要组件,也是使用 SQL Remote 或 [复制代理] 复制数据所必需的. 在缺省情况下,所有数据库都使用事务

SQL Server数据库事务日志序列号(LSN)介绍

原文:http://blog.csdn.net/tjvictor/article/details/5251463 ? ? 日志序列编号(LSN)是事务日志里面每条记录的编号. 当你执行一次备份时,一些LSN值就被同时存储在文件本身及msdb..backupset表中.你可以使用RESTORE HEADERONLY语法来从备份文件中获取LSN值. ? 注意:在SQL Server 2000中,有一列叫做DifferentialBaseLSN.但在SQL Server 2005中,相同的列名称变成了

如何读懂SQL Server的事务日志

简介 本文将介绍SQL Server的事务日志中记录了哪一些信息,如何来读懂这些事务日志中信息.首先介绍一个微软没有公开的函数fn_dblog,在文章的接下来的部分主要用到这个函数来读取事务日志. fn_dblog(@StartingLSN,@EndingLSN) [email protected]:表示起始的LSN号,如果为NULL值则表示从首日志记录开始查询. [email protected]:表示结束的LSN号,如果为NULL值则表示查询到尾日志记录. --需要注意的是我们平时所看到的L

SQL Server备份事务日志结尾(Tail)

原文:http://blog.csdn.net/tjvictor/article/details/5256906 ? 事务日志结尾经常提交数据库未备份的事务日志内容.基本上,每一次你执行事务日志备份时,你都在执行事务日志结尾的备份. 那为什么会这么设计呢?因为也许由于介质的损坏,当数据库已经不再可用时,麻烦就来了.如果下一个逻辑步骤正好就是要备份当前事务日志的话,可以应用这个备份来使数据库处于等待(Standby)状态.你甚至可以在数据库文件不可用的状态下使用NO_TRUNCATE来备份事务日志

SQL Server中事务日志管理的步骤,第5级:完全恢复模式管理日志

SQL Server中事务日志管理的步骤,第5级:完全恢复模式管理日志 作者:Tony Davis,2012/01/27 系列 本文是进阶系列的一部分:SQL Server中事务日志管理的步骤 当事情进展顺利时,无需特别注意事务日志的作用或工作方式.您只需要确信每个数据库都有正确的备份机制.当出现问题时,了解事务日志对于采取纠正措施很重要,特别是在需要紧急恢复数据库的时间点时!Tony Davis给出了每个DBA都应该知道的正确的细节级别. 在此级别中,我们将回顾在完全恢复模式下工作时进行日志备

十七周-SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志

SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志 By Tony Davis, 2012/01/27 http://www.sqlservercentral.com/articles/Stairway+Series/73785/ 该系列 文是SQL Server中"Stairway系列:事务日志管理的阶梯"的一部分 当事情进展顺利时,不需要特别意识到事务日志的作用或工作原理.你只需要确信每个数据库都有正确的备份机制.当事情出错时,对事务日志的理解对于采取纠正措施

SQL SERVER的事务日志

1 基本介绍 每个数据库都具有事务日志,用于记录所有事物以及每个事物对数据库所作的操作. 日志的记录形式需要根据数据库的恢复模式来确定,数据库恢复模式有三种: 完整模式,完全记录事物日志,需要定期进行日志备份. 大容量日志模式,适用于批量操作的数据库,可以以更压缩的方式处理日志,需要定期进行日志备份. 简单模式,也有日志文件,只是该模式下可以通过checkpoint自动重用virtual log file,所以日志文件会处于一直重复使用的过程,保持一定大小,但是,如果有一个事务启动,很久没有co

为什么SQL Server需要事务日志

为什么我们需要事务日志,可不可以删除或者不添加日志文件?答案是否定的,如果没有事务日志,你的数据库根本无法工作! 事务日志支持以下操作: 事务回滚 如果用户或程序使用了Rollback 语句或者是数据库检测到了失败的操作 . 这些日志文件就会被用来做回滚. 恢复未完成的事务 如果你在数据库发生错误时重新启动数据库服务器(服务),可能发现数据库处于恢复模式(In Recovery),这表明数据库正在回滚服务器(服务)重启之前未完成的事务,或者是继续执行那些已经写入到了日志文件却没有写入数据文件的事