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

 

相關文章
相關標籤/搜索