zoukankan      html  css  js  c++  java
  • sqlserver日志处理不当而造成的隐患

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

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

           

    第一反应是不是数据库连接不够用了?导致超时?但是通过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.”

     

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

    解决方案:

    1、定期清理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

    2、修改默认数据库log增量10% 为 500M(看具体情况,一般够了)

  • 相关阅读:
    用好C++的智慧
    git patch
    ORACLE 11G导入数据报ORA-12154错误解析
    graphviz
    resource for better user experiences
    reference
    xv6
    common use tools provided as website
    eclipse plugins
    Massive Online Open Course sites
  • 原文地址:https://www.cnblogs.com/slience-s/p/11957031.html
Copyright © 2011-2022 走看看