重庆九龙坡营销型网站建设价格,登录建设银行网站打不开,快代理,大良建站公司行业现状Contents 1. 问题描述2. 处理方式 2.1 系统备份2.2 收缩日志2.3 恢复模式2.4 日志增长无法控制 1. 问题描述 Azure DevOps Server 作为微软的软件开发管理平台产品#xff0c;理所当然地使用了微软的数据库软件SQL Server。 在一个大型的开发团队中#xff0c;Azure DevOps S… Contents 1. 问题描述2. 处理方式 2.1 系统备份2.2 收缩日志2.3 恢复模式2.4 日志增长无法控制 1. 问题描述 Azure DevOps Server 作为微软的软件开发管理平台产品理所当然地使用了微软的数据库软件SQL Server。 在一个大型的开发团队中Azure DevOps Server 系统中存储了大量的代码、工作项和持续集成数据用户频繁提交和更新数据每天会产生大量的数据库日志如果对数据库日志处理不当就会产生如文章标题所示的问题“数据库日志已满TF30042: The database is full”(如下图)此时用户可能无法使用任何客户端登录系统即使偶尔登录成功也不能提交任何更改。 图由于数据库日志已满DevOps Server 系统异常 2. 处理方式 在SQL Server中日志文件的最大大小可以是2 TB(SQL Server 2016及以后版本)。然而实际上日志文件的大小受到操作系统文件大小限制的影响。例如在32位操作系统上最大文件大小通常限制为2 GB。在64位操作系统上最大文件大小可以达到2 TB。如果日志文件超过了操作系统允许的最大文件大小SQL Server将无法使用该日志文件并可能报错。 如果数据库的日志文件已经达到了2TB那么管理员必须采取相关措施才能保证系统运行正常参考笔者最近处理的几个数据库日志的问题总结可以采取下面的几种处理方式 2.1 系统备份 对Azure DevOps Server系统启动定时备份(如下图)不仅可以保障数据的安全性同时还能起到自动截断日志的功能。 一般在配置自动备份时需要将完整备份和差异备份结合起来使用这样不仅可以节省磁盘还能提高备份的速度例如我们可以将周六设定为完整备份的时间将其他日期设置为差异备份的时间。当系统完成完整备份后数据库会将日志截断此后产生的日志可以利用之前的日志文件空间从而确保日志文件不会无限制增长。 图备份计划 如果在一个用户量巨大且更新非常频繁的环境中还需要考虑事务日志备份一周一次全量备份同时截断日志但是在一周过程中如果数据变化量太大可能会导致一周的日志增长量超过了2TB就可能出现前面说到的TF30042错误。在这种场景中我们可以启用事务日志(如下图)例如我们配置为“每60分钟”执行一次事务日志备份当事务日志备份完成后数据库也会自动截断日志此后产生的日志可以利用之前的日志文件空间。 图配置事务日志备份 2.2 收缩日志 如果由于特殊原因导致日志太大或已经增长到了2TB我们可以在数据库软件中通过收缩数据库文件的方式来缩小日志文件。 如下图我们使用SQL Server的数据库管理工具SQL Server Management Studio链接到数据库服务器并启动收缩文件功能。 2.3 恢复模式 如果很不幸你的数据库日志文件已经增长到了2TB那么使用上面收缩数据库文件的方式已经行不通我们必须将数据库的恢复模式设置为“简单”再收缩数据库日志文件。 在SQL Server中如果我们将数据库的恢复模式设置为“简单”此时系统不会将日志存储到日志文件中因此日志文件不会再增长但是这种设置带来的风险也显而易见万一出现故障你不能将数据库恢复到特定的时间点。 设置数据库简单恢复模式的操作视图如下 2.4 日志增长无法控制 最近和一个客户处理了一个“日志增长无法控制”的问题这个问题比较特殊但是如果在一个大型的Azure DevOps Server部署场景中这个现象可能比较普遍。 事情的起源是这样的这个部署环境中有大约3千用户数据库已经达到15TB每日的数据变化非常频繁用户发现近期的数据完整备份正常但是日志文件却没有自动截断不停的增长已经接近2TB。管理员将数据库从AlwaysOn中移除出来并且将数据库的恢复模式设置为简单但是日志的增长还是无法控制并且使用收缩日志的方式也不能减少日志文件。 通过分析数据库中长时间运行的脚本发现有一个Alter Index的session一直在运行且已经持续了好几天我们使用数据库的kill命令终止了这个进程后发现日志马上停止了增长并且也将日志文件收到到最小。 Azure DevOps Server使用Alter Index重建索引由于数据量太大重建索引的操作持续时间过长从而引发日志文件不能收缩。这种问题的产生源于SQL Server的设计机制在SQL Server中如果存在一个长时间的更新操作在此期间系统不允许截断日志。这种长时间的索引主要是由于我们对团队项目集合启用了分析功能(如下图)而团队项目集合中的数据量太大就出现了上面描述的问题。 https://www.cnblogs.com/danzhangAzure DevOps MVP 张洪君