SQL日志太大?教你一键清理

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
日志服务 SLS,月写入数据量 50GB 1个月
简介: 最近数据仓库时不时爆磁盘空间不足,导致定时任务执行失败,这可了得,要知道定时任务执行的可是每天的业务数据。仔细检查,发现是日志文件爆满,这是咋回事呢?原来数据仓库中,每天的定时任务需要从其他系统里面抽取数据过来,导致数据文件和日志文件的磁盘空间都增长的飞快。数据不能清理,但是日志文件是可以清理的,说干就干。

测试环境

SQL Server 2017


操作步骤


1. 将恢复模式改成“简单”
右键要清理的数据库名 - 属性,切换到选项,将恢复模式修改为简单,如下图1,然后点确定。

1.jpg

                                                   图1

2、收缩日志还是右键要清理的数据库名任务收缩文件,按如图2进行设置,设置完后点确定即可

2.jpg


                                                             图2

这样日志就收缩到1M了,是不是很简单?

但是如果遇到了需要经常清理日志怎么办?难道每次都要来这样设置一遍吗?就没有什么办法让它自动完成?

答案肯定是有的!下面才是真正的一键清理。

这里我们要浓重介绍SQL Server的代理功能了


SQL Server 代理

SQL Server代理功能主要是用来完成一些定时任务的,说白了就是你写好命令,配置好执行的频率和时间,它就可以按时执行你写好的命令。

下面我们将图1和图2中的操作使用命令的形式做一个定时任务。

1、新建作业

如下图3,我们右键作业新建作业即可开始新建一个作业了

3.gif


                                                     图3

2、命名作业
给你的作业命名,这个可以随便起,能识别就行

4.jpg


3、新建步骤点击左侧的菜单栏,选择步骤—右侧底部点击新建...—在弹出的窗口中做如下配置:

5.jpg

如果你的数据库名跟我的不一样,可以套用下面的命令:

USE [master]
GO
ALTERDATABASE 要清理的数据库名称 SETRECOVERY SIMPLE WITH NO_WAIT
GO
--将数据库设置为简单模式
ALTERDATABASE 要清理的数据库名称 SETRECOVERY SIMPLE
GO
USE 要清理的数据库名称
GO
--将数据库的日志收缩为2M
DBCC SHRINKFILE (N'要清理的数据库名称_log' , 2, TRUNCATEONLY)
GO
USE [master]
GO
ALTERDATABASE 要清理的数据库名称 SETRECOVERYFULLWITH NO_WAIT
GO
--将数据库恢复为完整模式
ALTERDATABASE 要清理的数据库名称 SETRECOVERYFULL  
GO


然后点确定即可。


4、新建计划回到新建作业窗口,点击左侧菜单里的计划—点击右边底部的新建...—在弹出的窗口中做如下配置:

6.jpg

上面的作业计划就是你要执行上面命令的频率和具体日期和时间,上面我们设置的是每隔1周,在星期日的上午1点执行该命令。

这样一个定时清理日志的任务就完成了。

建好后会存在你的作业里面

7.jpg

你也可以随时手动执行上面的作用,只需要右键作业名——作业开始步骤...,然后就开始执行了,如下图:

8.jpg

这是已经执行完成的界面。

如果下次需要清理了,一键搞定。


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
XML SQL 运维
关于日志的清理
关于日志的清理
28 0
|
22天前
|
SQL 关系型数据库 MySQL
MySQL数据库——索引(3)-索引语法(创建索引、查看索引、删除索引、案例演示),SQL性能分析(SQL执行频率,慢查询日志)
MySQL数据库——索引(3)-索引语法(创建索引、查看索引、删除索引、案例演示),SQL性能分析(SQL执行频率,慢查询日志)
22 2
|
3天前
|
SQL Java 数据库连接
Mybatis日志SQL解析
Mybatis日志SQL解析
6 0
|
1月前
|
关系型数据库 MySQL 调度
实时计算 Flink版产品使用合集之归档日志定时清理导致任务失败如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
1月前
|
弹性计算 运维 Shell
清理日志文件
【4月更文挑战第29天】
21 1
|
1月前
|
消息中间件 存储 Kafka
【Kafka】Kafka 的日志保留期与数据清理策略
【4月更文挑战第13天】【Kafka】Kafka 的日志保留期与数据清理策略
|
1月前
|
SQL 存储 关系型数据库
Mysql主从同步 清理二进制日志的技巧
Mysql主从同步 清理二进制日志的技巧
20 1
|
1月前
|
SQL 缓存 关系型数据库
日志系统:一条SQL更新语句是如何执行的?
本文探讨了MySQL中更新语句的执行流程和日志系统,包括redo log(重做日志)和binlog(归档日志)的作用。更新语句会经过连接器、分析器、优化器和执行器,同时涉及redo log和binlog以确保数据的安全性和一致性。redo log用于快速更新并保证crash-safe,采用Write-Ahead Logging策略,先写入redo log再更新磁盘。binlog则是逻辑日志,用于归档和数据恢复。两阶段提交保证redo log和binlog的一致性。文章还提到,定期全量备份的频率影响数据库系统的恢复能力和数据安全性。
20 0
日志系统:一条SQL更新语句是如何执行的?
|
1月前
|
SQL 关系型数据库 MySQL
如何将完整的sql打在控制台和日志上
如何将完整的sql打在控制台和日志上
23 0
|
2天前
|
SQL 运维 关系型数据库