日志越来越大,备份后有办法自动变小吗?

yzy8788 2017-09-13 05:18:54
1、sqlserver数据库日志越来越大,有没有办法在备份日志后,自动收缩日志?
2、差异备份、日志备份,可以防止日志进一步扩大吗?
...全文
754 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
yzy8788 2017-09-16
  • 打赏
  • 举报
回复
看了兄 @z10843087 专门写的博文,里面有一段微软官方阐述 “完成日志备份后,日志的头部将前移,一些日志空间可能变为可重复使用” 这段话解决了我的疑惑
yzy8788 2017-09-16
  • 打赏
  • 举报
回复
引用 28 楼 xiaoxiangqing 的回复:
备份会缩小一点日志,取决于数据库的模式
我也猜想备份日志后,会缩小一点,因为我那台sqlserver2008r2服务器,日志备份频率很高
OwenZeng_DBA 2017-09-16
  • 打赏
  • 举报
回复
引用 32 楼 z10843087 的回复:
[quote=引用 31 楼 yzy8788 的回复:] 看了兄 @z10843087 专门写的博文,里面有一段微软官方阐述 “完成日志备份后,日志的头部将前移,一些日志空间可能变为可重复使用” 这段话解决了我的疑惑
嗯,就是让日志文件可以重用,如果日志写入比较多,就增加备份的频率。[/quote] @yzy8788 问题解决了就结贴哈,
OwenZeng_DBA 2017-09-16
  • 打赏
  • 举报
回复
引用 31 楼 yzy8788 的回复:
看了兄 @z10843087 专门写的博文,里面有一段微软官方阐述 “完成日志备份后,日志的头部将前移,一些日志空间可能变为可重复使用” 这段话解决了我的疑惑
嗯,就是让日志文件可以重用,如果日志写入比较多,就增加备份的频率。
OwenZeng_DBA 2017-09-15
  • 打赏
  • 举报
回复
引用 25 楼 yzy8788 的回复:
[quote=引用 23 楼 z10843087 的回复:] [quote=引用 21 楼 yzy8788 的回复:] [quote=引用 18 楼 z10843087 的回复:] [quote=引用 17 楼 yzy8788 的回复:] sqlserver2008 r2,那台服务器,mdf文件都有6G+,而日志文件才1G,不解啊
你先运行下我发的那个脚本把,,看看结果,截图来看看[/quote] 看不懂什么有价值的东西啊[/quote] 哪一行是你日志很大那个库[/quote] 最后一个哦[/quote] 可以参考下下面的博客: http://blog.csdn.net/z10843087/article/details/77986055 你这个数据库对数据做下日志备份,日志就可以收缩了。如果想要日志自动变小,不要长的,你可以吧日志备份的频率增加。 比如现在1个小时一次,你改成15分钟一次。这样,日志就不会继续长大了。
xiaoxiangqing 2017-09-15
  • 打赏
  • 举报
回复
备份会缩小一点日志,取决于数据库的模式
吉普赛的歌 版主 2017-09-15
  • 打赏
  • 举报
回复
引用 26 楼 yzy8788 的回复:
[quote=引用 24 楼 yenange 的回复:] [quote=引用 22 楼 yzy8788 的回复:] 现在收缩的问题不纠结了,就纠结为什么sqlserver2008r2,那台服务器上,日志维持1G几年都不增长/擦汗
1. 那个2008的日志不增长的库的恢复模式是 简单 模式吧? 2. 即使是完整, 如果没什么人用, 或者都是一些小事务, 增删改比较少, 也产生不了多少日志。[/quote] 1、是完整模式哦 2、用户量很大,增删改很多,mdf文件都有6个多G了,系统运行7年左右了[/quote] 如果负载不大, 你自己实际抓取一周的 sqlprofiler 吧。 这些东西不需要想很多的了, 每天的作业: 1. 备份数据库, 2. 备份日志, 3. 删除过期文件。 这些设置好了基本就不用管的。
OwenZeng_DBA 2017-09-14
  • 打赏
  • 举报
回复
引用 17 楼 yzy8788 的回复:
sqlserver2008 r2,那台服务器,mdf文件都有6G+,而日志文件才1G,不解啊
你先运行下我发的那个脚本把,,看看结果,截图来看看
yzy8788 2017-09-14
  • 打赏
  • 举报
回复
sqlserver2008 r2,那台服务器,mdf文件都有6G+,而日志文件才1G,不解啊
yzy8788 2017-09-14
  • 打赏
  • 举报
回复
所以一度,我误以为,做了差异备份或者日志备份,日志占用空间就不往上增长了
yzy8788 2017-09-14
  • 打赏
  • 举报
回复
引用 14 楼 z10843087 的回复:
[quote=引用 13 楼 yzy8788 的回复:] 2008那台,就是日志大小维持1G那台,也并没有限制日志增长空间
首先,根据业务情况的不同,日志大小有可能不同,20G如果不持续的增长,我觉得没什么问题。注意持续关注下就可以 其次,用#7楼的语句查看下是什么原因日志不能重用。[/quote] 1、不太明白,兄台说的“什么原因日志不能重用”啥意思,可能是我对日志重用没概念 2、10楼兄台说,“日志备份后不会自动收缩,还是得写语句来处理的”,既然备份后日志不会自动收缩,那猜想这20G还得往上增长 3、日志占用空间维持1G不动的那台服务器,跑的是类似电子商务系统,增删改操作很多,这种应该也容易产生大日志,但是它就死磕着1G,不往上增长,这个系统跑了有7年左右
Oliver5914 2017-09-14
  • 打赏
  • 举报
回复
写个作业,然后作业里面分两步:
1、备份数据库sql
2、删除日志sql

如不明白百度下很简单,网上有现成的代码




yzy8788 2017-09-14
  • 打赏
  • 举报
回复
引用 24 楼 yenange 的回复:
[quote=引用 22 楼 yzy8788 的回复:] 现在收缩的问题不纠结了,就纠结为什么sqlserver2008r2,那台服务器上,日志维持1G几年都不增长/擦汗
1. 那个2008的日志不增长的库的恢复模式是 简单 模式吧? 2. 即使是完整, 如果没什么人用, 或者都是一些小事务, 增删改比较少, 也产生不了多少日志。[/quote] 1、是完整模式哦 2、用户量很大,增删改很多,mdf文件都有6个多G了,系统运行7年左右了
yzy8788 2017-09-14
  • 打赏
  • 举报
回复
引用 23 楼 z10843087 的回复:
[quote=引用 21 楼 yzy8788 的回复:] [quote=引用 18 楼 z10843087 的回复:] [quote=引用 17 楼 yzy8788 的回复:] sqlserver2008 r2,那台服务器,mdf文件都有6G+,而日志文件才1G,不解啊
你先运行下我发的那个脚本把,,看看结果,截图来看看[/quote] 看不懂什么有价值的东西啊[/quote] 哪一行是你日志很大那个库[/quote] 最后一个哦
吉普赛的歌 版主 2017-09-14
  • 打赏
  • 举报
回复
引用 22 楼 yzy8788 的回复:
现在收缩的问题不纠结了,就纠结为什么sqlserver2008r2,那台服务器上,日志维持1G几年都不增长/擦汗
1. 那个2008的日志不增长的库的恢复模式是 简单 模式吧? 2. 即使是完整, 如果没什么人用, 或者都是一些小事务, 增删改比较少, 也产生不了多少日志。
吉普赛的歌 版主 2017-09-14
  • 打赏
  • 举报
回复
引用 11 楼 yzy8788 的回复:
[quote=引用 10 楼 yenange 的回复:]
--如果不是什么重要库, 不要搞完整模式, 维护比较麻烦
--如果确实是重要库, 请按下面的操作:
--创建作业,每天凌晨 2 点备份日志并收缩
--下面的脚本你可以先手动执行,没问题了才能用在作业中
--作业的步骤中必须选定需要收缩的库
DECLARE @bakfile nvarchar(100)--@bakfile备份文件名
--备份的路径自己修改一下
SET @bakfile='E:\database_bak\log\dbName_bak_'+replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')+'.log'
--备份日志, 数据库名自己修改
BACKUP LOG dbName TO DISK= @bakfile WITH RETAINDAYS= 1,COMPRESSION
--收缩日志,日志文件的逻辑名称可以 
-- select name from sys.sysfiles 
-- 找到日志对应的逻辑名称复制到下面
DBCC shrinkfile(dbName_log,1024) --1024单位为MB
                                 --
--日志备份后不会自动收缩,还是得写语句来处理的。
我现在有一个纳闷的问题 我有两台数据库服务器,一台跑的是2008,一台跑的是2005 两台设置的备份策略都差不多,完整备份、差异备份、日志备份三个备份计划都有 2008这台服务器日志一直维持在1G,都几年了还维持在1G左右,每天数据量也很大,并没有自动收缩计划 而2005这台服务器日志一直增长,目前都快20G了 纳闷了[/quote] 你按我的脚本, 加一个日志备份并收缩日志的作业就行了呀, 还纠结什么呀? 这个脚本, 你可以手动执行一下, 如果收缩不了, 运行:
SELECT d.name,d.log_reuse_wait_desc FROM sys.databases AS d WHERE d.name=DB_NAME()
截图贴出来。
OwenZeng_DBA 2017-09-14
  • 打赏
  • 举报
回复
引用 21 楼 yzy8788 的回复:
[quote=引用 18 楼 z10843087 的回复:] [quote=引用 17 楼 yzy8788 的回复:] sqlserver2008 r2,那台服务器,mdf文件都有6G+,而日志文件才1G,不解啊
你先运行下我发的那个脚本把,,看看结果,截图来看看[/quote] 看不懂什么有价值的东西啊[/quote] 哪一行是你日志很大那个库
yzy8788 2017-09-14
  • 打赏
  • 举报
回复
引用 19 楼 yenange 的回复:
[quote=引用 11 楼 yzy8788 的回复:] [quote=引用 10 楼 yenange 的回复:]
--如果不是什么重要库, 不要搞完整模式, 维护比较麻烦
--如果确实是重要库, 请按下面的操作:
--创建作业,每天凌晨 2 点备份日志并收缩
--下面的脚本你可以先手动执行,没问题了才能用在作业中
--作业的步骤中必须选定需要收缩的库
DECLARE @bakfile nvarchar(100)--@bakfile备份文件名
--备份的路径自己修改一下
SET @bakfile='E:\database_bak\log\dbName_bak_'+replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')+'.log'
--备份日志, 数据库名自己修改
BACKUP LOG dbName TO DISK= @bakfile WITH RETAINDAYS= 1,COMPRESSION
--收缩日志,日志文件的逻辑名称可以 
-- select name from sys.sysfiles 
-- 找到日志对应的逻辑名称复制到下面
DBCC shrinkfile(dbName_log,1024) --1024单位为MB
                                 --
--日志备份后不会自动收缩,还是得写语句来处理的。
我现在有一个纳闷的问题 我有两台数据库服务器,一台跑的是2008,一台跑的是2005 两台设置的备份策略都差不多,完整备份、差异备份、日志备份三个备份计划都有 2008这台服务器日志一直维持在1G,都几年了还维持在1G左右,每天数据量也很大,并没有自动收缩计划 而2005这台服务器日志一直增长,目前都快20G了 纳闷了[/quote] 你按我的脚本, 加一个日志备份并收缩日志的作业就行了呀, 还纠结什么呀? 这个脚本, 你可以手动执行一下, 如果收缩不了, 运行:
SELECT d.name,d.log_reuse_wait_desc FROM sys.databases AS d WHERE d.name=DB_NAME()
截图贴出来。[/quote] 现在收缩的问题不纠结了,就纠结为什么sqlserver2008r2,那台服务器上,日志维持1G几年都不增长/擦汗
yzy8788 2017-09-14
  • 打赏
  • 举报
回复
引用 18 楼 z10843087 的回复:
[quote=引用 17 楼 yzy8788 的回复:]
sqlserver2008 r2,那台服务器,mdf文件都有6G+,而日志文件才1G,不解啊

你先运行下我发的那个脚本把,,看看结果,截图来看看[/quote]

看不懂什么有价值的东西啊
OwenZeng_DBA 2017-09-13
  • 打赏
  • 举报
回复
引用 13 楼 yzy8788 的回复:
2008那台,就是日志大小维持1G那台,也并没有限制日志增长空间
首先,根据业务情况的不同,日志大小有可能不同,20G如果不持续的增长,我觉得没什么问题。注意持续关注下就可以 其次,用#7楼的语句查看下是什么原因日志不能重用。
加载更多回复(13)

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧