Azure DevOps Server 数据库日志已满,TF30042: The database is full

news2024/11/16 13:26:06

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 系统异常

image

2. 处理方式

在SQL Server中,日志文件的最大大小可以是2 TB(SQL Server 2016及以后版本)。然而,实际上,日志文件的大小受到操作系统文件大小限制的影响。例如,在32位操作系统上,最大文件大小通常限制为2 GB。在64位操作系统上,最大文件大小可以达到2 TB。如果日志文件超过了操作系统允许的最大文件大小,SQL Server将无法使用该日志文件,并可能报错。

如果数据库的日志文件已经达到了2TB,那么管理员必须采取相关措施才能保证系统运行正常,参考笔者最近处理的几个数据库日志的问题,总结可以采取下面的几种处理方式:

2.1 系统备份

对Azure DevOps Server系统启动定时备份(如下图),不仅可以保障数据的安全性,同时还能起到自动截断日志的功能。

一般在配置自动备份时,需要将完整备份和差异备份结合起来使用,这样不仅可以节省磁盘,还能提高备份的速度;例如我们可以将周六设定为完整备份的时间,将其他日期设置为差异备份的时间。当系统完成完整备份后,数据库会将日志截断,此后产生的日志可以利用之前的日志文件空间,从而确保日志文件不会无限制增长。

图:备份计划

image

如果在一个用户量巨大且更新非常频繁的环境中,还需要考虑事务日志备份;一周一次全量备份,同时截断日志,但是在一周过程中如果数据变化量太大,可能会导致一周的日志增长量超过了2TB,就可能出现前面说到的TF30042错误。在这种场景中,我们可以启用事务日志(如下图),例如我们配置为“每60分钟”执行一次事务日志备份;当事务日志备份完成后,数据库也会自动截断日志,此后产生的日志可以利用之前的日志文件空间。

图:配置事务日志备份

image

2.2 收缩日志

如果由于特殊原因导致日志太大,或已经增长到了2TB,我们可以在数据库软件中,通过收缩数据库文件的方式来缩小日志文件。

如下图,我们使用SQL Server的数据库管理工具SQL Server Management Studio链接到数据库服务器,并启动收缩文件功能。

image

2.3 恢复模式

如果很不幸,你的数据库日志文件已经增长到了2TB,那么使用上面收缩数据库文件的方式已经行不通,我们必须将数据库的恢复模式设置为“简单”,再收缩数据库日志文件。

在SQL Server中,如果我们将数据库的恢复模式设置为“简单”,此时系统不会将日志存储到日志文件中,因此日志文件不会再增长;但是这种设置带来的风险也显而易见,万一出现故障,你不能将数据库恢复到特定的时间点。

设置数据库简单恢复模式的操作视图如下:

image

2.4 日志增长无法控制

最近和一个客户处理了一个“日志增长无法控制”的问题,这个问题比较特殊,但是如果在一个大型的Azure DevOps Server部署场景中,这个现象可能比较普遍。

事情的起源是这样的,这个部署环境中有大约3千用户,数据库已经达到15TB,每日的数据变化非常频繁;用户发现近期的数据完整备份正常,但是日志文件却没有自动截断,不停的增长,已经接近2TB。管理员将数据库从AlwaysOn中移除出来,并且将数据库的恢复模式设置为简单,但是日志的增长还是无法控制;并且使用收缩日志的方式也不能减少日志文件。

通过分析数据库中长时间运行的脚本,发现有一个Alter Index的session一直在运行,且已经持续了好几天;我们使用数据库的kill命令终止了这个进程后,发现日志马上停止了增长,并且也将日志文件收到到最小。

Azure DevOps Server使用Alter Index重建索引,由于数据量太大,重建索引的操作持续时间过长,从而引发日志文件不能收缩。这种问题的产生源于SQL Server的设计机制,在SQL Server中,如果存在一个长时间的更新操作,在此期间系统不允许截断日志。这种长时间的索引,主要是由于我们对团队项目集合启用了分析功能(如下图),而团队项目集合中的数据量太大,就出现了上面描述的问题。

image

https://www.cnblogs.com/danzhang
Azure DevOps MVP 张洪君

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2049851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TED: 1靶场复现【附代码】(权限提升)

靶机下载地址: Ted: 1 ~ VulnHubTed: 1, made by Avraham Cohen. Download & walkthrough links are available.https://www.vulnhub.com/entry/ted-1,327/ 1. 主机发现端口扫描目录扫描敏感信息获取 1.1. 主机发现 nmap -sn 192.168.59.0/24|grep -B 2 00:…

webrtc学习笔记1

WebRTC开发环境 配置vscode 安装插件 Prettier Code Formatter 使用 Prettier 来统一代码风格,当保存 HTML/CSS/JavaScript 文件时,它会自动调整代码格式。 Live Server:在本地开发环境中,实时重新加载(reload)页面。 第一个简…

python logger冗余日志处理

在for循环中创建logger日志,产生冗余日志 冗余日志 import logging import osdef create_directory_file(log_path):"""创建目录,如果目录不存在则创建目录。"""# 获取目录路径directory os.path.dirname(log_path)# 如…

希尔排序时间复杂度的计算

希尔排序时间复杂度的计算 希尔排序的时间复杂度估算: 外层循环: 外层循环的时间复杂度可以直接给出为: O(log2 n) 或者 O(log3 n) ,即 O(log n) 内层循环: 希尔排序时间复杂度不好计算,因为 gap 的取值…

中间件漏洞原理与复现大全【万字总结】

文章目录 IISHTTP.SYS远程代码执行漏洞(CVE-2015-1635)漏洞描述影响版本漏洞复现 IIS短文件之目录扫描1、概念3、应用场景:4、漏洞利用: IIS文件解析漏洞IIS 6 解析漏洞IIS 7 解析漏洞 IIS写权限漏洞简介条件漏洞复现 NginxNginx …

kali实用工具之nmap

Nmap是一款开源免费的网络发现和安全审计工具。它被用来快速扫描大型网络,包括主机探测与发现、开放的端口情况、操作系统与应用服务指纹识别及常见安全漏洞。它的图形化界面是Zenamp。 Nmap的功能包括:主机发现、端口扫描、版本侦测、操作系统侦测。 …

工程师 - 震动反馈

The Benefits of Tactile Feedback 在设计电子设备时,您可能会考虑是否使用触觉、电阻或电容式触摸技术。尽管触摸屏大受欢迎,但许多用户仍然偏爱物理按键。虽然越来越多的公司在其产品中采用电阻式或电容式触摸技术,但切勿忽视触觉反馈的诸多…

常见错误和异常,常见异常处理

Python 有两种错误很容易辨认&#xff1a;语法错误和异常。 语法错误 下面的例子中的问题是print&#xff08;&#xff09;前面缺少一个冒号&#xff1a; >>> while True print(Hello world)File "<stdin>", line 1, in ?while True print(Hello w…

拉取阿里云镜像到linux环境

1. 登录阿里云Docker Registry docker login --username<你的阿里云账号> registry.cn-hangzhou.aliyuncs.com2、到阿里云容器镜像服务查看镜像版本 3、拉取阿里云镜像到linux docker pull registry.cn-hangzhou.aliyuncs.com/study-img/kafka:3.7.04、查看linux服务器…

开源AI智能名片商城小程序在私域流量运营中的转化效率与ROI提升研究

摘要 在数字化浪潮的推动下&#xff0c;企业营销环境正经历着前所未有的变革。公域流量的高成本与低转化率迫使企业寻找新的增长点&#xff0c;而私域流量以其低成本、高粘性、可复用等优势逐渐成为企业营销战略的核心。开源AI智能名片商城小程序作为一种创新的数字化工具&…

非常nice! IDEA远程Debug调试程序

IDEA远程Debug调试程序 1.IDEA里边开发一个app程序 没什么写的&#xff0c;画个小心心. maven打包可执行的jar maven package 1. 上传jar到远程服务器并启动 1.1 win远程上传jar到远程服务器 scp IDEADebug-1.0-SNAPSHOT.jar rootnode01:/opt/ 1.2 配置远程应用以支持调试: 在远…

Linux网络编程2(理解局域网)

前面的一篇文章&#xff0c;我们简单地了解了网络的发展过程&#xff0c;并且简单的介绍了网络的一些基本术语&#xff0c;这篇文章&#xff0c;我们来详细的了解一下局域网的内容&#xff0c;相信看完这篇文章&#xff0c;大家能够对局域网有清晰的认识。 教科书一般是按照五层…

参与团体标准的意义以及作用

随着经济的快速发展和科技的不断进步&#xff0c;行业的规范与统一变得愈发重要。团体标准应运而生&#xff0c;成为了推动行业前行的强大力量。参与其中&#xff0c;其所带来的作用和意义犹如璀璨星辰&#xff0c;照亮了发展的道路 参与团体标准具有诸多显著的作用&#xff0c…

【vue讲解:ref属性、动态组件、插槽、vue-cli创建项目、vue项目目录介绍、vue项目开发规范、es6导入导出语法】

0 ref属性&#xff08;组件间通信&#xff09; # 1 ref属性放在普通标签上<input type"text" v-model"name" ref"myinput">通过 this.$refs[myinput] 拿到的是 原生dom对象操作dom对象&#xff1a;改值&#xff0c;换属性。。。# 2 ref属…

天机学堂第11天 异步领劵

目录 优化思路分析 缓存数据结构 异步领券 优化思路分析 高并发写优化的几种思路 合并写请求比较适合应用在写频率较高&#xff0c;写数据比较简单的场景。而异步写则更适合应用在业务比较复杂&#xff0c;业务链较长的场景。 显然&#xff0c;领券业务更适合使用异步写方…

排序(直接插入,希尔,选择,快排)

文章目录 插入排序直接插入排序希尔排序 选择排序直接选择排序堆排序 交换排序冒泡排序&#xff1a;快速排序&#xff08;hoare版本&#xff09;快速排序优化&#xff08;三数取中&#xff09;快速排序优化&#xff08;小区间优化&#xff09; 快速排序&#xff08;挖坑法&…

Unity转Unreal5从入门到精通之UMG的使用

前言 UMG (Unreal Motion Graphics UI Designer)是Unreal种的可视化 UI 工具。它就类似于Unity中的UGUI,可用于为用户创建游戏内 HUD、菜单和其他与界面相关的图形。 UMG 的核心是UI控件。它可用于创建UI界面&#xff08;按钮、复选框、滑块、进度条等&#xff09;。 快速入…

HiveSQL实战——大数据开发面试高频SQL题

查询每个区域的男女用户数 0 问题描述 每个区域内男生、女生分别有多少个 1 数据准备 use wxthive; create table t1_stu_table (id int,name string,class string,sex string ); insert overwrite table t1_stu_table values(4,张文华,二区,男),(3,李思雨,一区,女),(1…

linux -- Git基础使用

git是什么 简单说来Git是一个开源的分布式版本控制系统&#xff0c;那么什么是分布式呢&#xff0c;就是每个开发者拥有完整的本地仓库副本&#xff0c;包括所有历史记录和分支&#xff0c;可以独立工作&#xff0c;并通过合并来同步变更。 git优点 速度极快 Git在合并、分…

嵌入式 - 什么是数字晶体管

What is a digital transistor? 数字晶体管是一种集成电阻器的双极晶体管。 A digital transistor is a bipolar transistor that integrates resistors. Concerning internal resistor R1 / 关于内部电阻 R1 R1 的作用是通过将输入电压转换为电流来稳定晶体管的工作。 如果…