当使用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盘下看看是否创建了备份。如果备份出现,那么证明可以进行自动的数据库日志截断了,我们点击数据库进行切换,将备数据库换成主数据库,新建同样的警报,成功之后切回即可。
XenDesktop SQL Server Mirror事务日志维护