sqlserver日志处理不当而形成的隐患

sqlserver日志处理不当而形成的隐患

 

事故背景:一大早还在路上,群里陆续有人反馈系统一直报错 “Unknown error 258”,后来查询日志发现错误日志sql

       

 

第一反应是否是数据库链接不够用了?致使超时?可是经过sql查询当时链接也只有40个左右,因而继续排查问题,发现dbserver机器这段时间磁盘io操做特别的高,很不正常,详见下图数据库

 

    

 

 

发现磁盘io问题,继续查看sqlserver日志,发现缘由: “Autogrow of file 'xxxx_log' in database 'xxxx' was cancelled by user or timed out after 3398 milliseconds.  Use ALTER DATABASE to set a smaller FILEGROWTH value for this file or to explicitly set a new file size.”sqlserver

 

 

 

 

发现这种问题由于log日志文件太大了一直没有压缩过,而且建立数据库的时候默认选择了10%的增量来扩大log增量文件,这样日志文件的10%会愈来愈大从而产生超时高io操做this

解决方案:spa

一、按期清理log文件,防止log文件愈来愈大日志

 

 1 USE [master]
 2 GO
 3 ALTER DATABASE 数据库名 SET RECOVERY SIMPLE WITH NO_WAIT
 4 GO
 5 ALTER DATABASE 数据库名 SET RECOVERY SIMPLE
 6 GO
 7 USE 数据库名
 8 GO
 9 DBCC SHRINKFILE (N'数据库名_Log' , 11, TRUNCATEONLY) 
10 GO
11 USE [master]
12 GO
13 ALTER DATABASE 数据库名 SET RECOVERY FULL WITH NO_WAIT
14 GO
15 ALTER DATABASE 数据库名 SET RECOVERY FULL
16 GO

 

二、修改默认数据库log增量10% 为 500M(看具体状况,通常够了)code

 

相关文章
相关标签/搜索