当使用SQL Server高可用×××的时候,例如,XenDesktop站点数据库使用完整的事务日志记录模式下运行的数据库镜像。 通过完整的事务日志记录模式下运行的事务日志会增长过大,直到数据库空间被填满或事务日志空间大小被填满。如果事务日志文件不会被监视的,默认情况下,SQL Server的配置日志文件会自动增长。这将导致2个问题:

1、事务日志文件会占用大量的磁盘空间

2、事物日志增长填满数据库空间,导致数据库不可用。

因此Citrix建议定期备份日志文件。这可以通过调度作业或维护计划来完成。另外,可以使用SQLServer代理来监视日志使用的大小超过规定的阈值和运行备份作业。

我们可以这样做,在创建一个站点数据库镜像的时候,可以设定数据库日志的大小,比如设定日志的最大为4GB。新建一个警报,设置为日志备份到另一个文件时,该日志文件达到80%。就停止日志增长,利用脚本进行消耗空会话等垃圾信息,并且还停止它归零磁盘空间和拖延数据库。以达到截断事务日志的目的。

    因此,对Mirror事务日志的维护,我们可以这样做:

 

    根据Citrix的最佳实践,Citrix建议更改DDC之前的心跳设置来减少事务日志的增长过快。DDC之间的心跳默认是30秒通信一次,这一次的通信会被记录进事务日志里面,而且会产生大约6060字节的大小。

 

   Citrix建议您使用数据库镜像时,更改默认的心跳超时。您可以通过更改注册表设置做到这一点。

这两个设置必须更改存储在HKEY_LOCAL_MACHINE \SOFTWARE\Citrix\ DesktopServer

这些设置是:

 HeartbeatPeriodMs - 控制心跳的时间间隔。即多久通信一次。Citrix建议设置为10分钟。

 MaxHeartbeatIntervalMs – 指定心跳最长时间可以不用通信,默认情况下,这是没有配置。

 

Citrix建议,如果使用完整恢复模式。那么建议设定一个固定大小的事务日志和一个怎对事务日志的SQL警告,这样,当事务日志达到50%或者80%时,事务日志自动备份并将以前的空数据释放掉。



使用固定大小的事务日志

给事务日志设定大小,这将阻止它填满磁盘空间。它还具有的优点就是在事务日志是预zero'd并不会自动增长。

新建警报

   登录数据库,选择“SQL Server代理 -> 新建 ->警报”。建立一个事件报警,本例中我们按数据库日志使用率超过80%就激活警报。

类型: SQL Server Performance Condition Alert

对象: MSSQL$CTXDB01:Databases

计数器: Percent Log Used

实例: XD

记数:高于80

选择左边的Response,勾选右侧的“Execute Job”,点击“New Job”。在“New Job”对话框中填入Job名称:XD-Log-Alert-Response-Job。点击左侧的“Steps”,点击右侧的“New…”

在弹出对话框里输入如下信息并点击OK

Step Name XD-Log-Alert-Response-Job-Step1

Type Tnsact-SQLScript T-SQL

Database XD

Command Backup log [XD]to Disk = 'C:\CitrixXenDesktopDB-Transactionlog.bak' with NOFORMAT,NOINIT,COMPRESSION, NAME = N'Transcation Log backup', SKIP, NOREWIND, NOUNLOAD, STATS=10;

    注:***的为XD数据库的名称。

  完成之后运行一下有无报错,无报错就证明设置成功,去C盘下看看是否创建了备份。如果备份出现,那么证明可以进行自动的数据库日志截断了,我们点击数据库进行切换,将备数据库换成主数据库,新建同样的警报,成功之后切回即可。