zoukankan      html  css  js  c++  java
  • 镜像数据库日志截断方法

    镜像数据库如果主体数据库日志过大,可以在主体数据库上定时作日志备份(比如每天1次)
    备份日志可以截断日志,让日志空间可以循环使用,这样可以使日志文件的大小不再增长。
    具体步骤,在主体数据库上设置job,每天执行一次sql(不是镜像数据库):
    BACKUP LOG 数据库名 TO DISK = 'h:log20111122.bak'

    执行完成后,日志文件大小并不会变小,只是文件使用率会下降


    相关知识:
    1、查看日志文件大小和使用率的sql
    USE 数据库名
    GO
    SELECT name, data_space_id 文件组id, size/128 [文件大小(兆)],
        FILEPROPERTY(name, 'SpaceUsed')/128 [已用空间(兆)],
        size/128 - FILEPROPERTY(name, 'SpaceUsed')/128 [未用空间(兆)],
        FILEPROPERTY(name, 'SpaceUsed')*100.0/size [使用率(%)],
        max_size/128 [最大值(兆)], growth 增长值, is_percent_growth 是否百分比增长, physical_name 物理路径
    FROM sys.database_files a

    也可以用下面的sql查看日志文件使用率(注:要管理员才有权限,需要技术部去执行)
    DBCC SQLPERF(LOGSPACE)
    得到结果列如下:
    Database Name    Log Size (MB)    Log Space Used (%)
    数据库名         日志文件大小    日志文件使用率
    这个使用率越小越好,备份日志后,使用率会降低,今天Newresourcedb数据库的日志变化情况:
    09点 271385M   99.98%
    执行日志备份,耗时3小时后变成
    14点 272685M   47.93%
    再执行日志备份,耗时1分钟后变成
    15点 272685M   1.13%

    2、镜像数据库选项的相关知识
    数据库镜像概述
    http://msdn.microsoft.com/zh-cn/library/ms189852.aspx
    异步数据库镜像(高性能模式)
    http://msdn.microsoft.com/zh-cn/library/ms187110(v=SQL.90).aspx
    同步数据库镜像(高安全性模式)
    http://msdn.microsoft.com/zh-cn/library/ms179344(v=SQL.90).aspx
    同步和异步的主要区别就是
    同步时,主数据库要等镜像数据库日志也写入磁盘后,才返回告诉我们成功
    而异步,则是主数据库把日志发给镜像数据库,不等镜像响应,就返回告诉我们成功
     
    3、 查表结构
     

    create table #t(name varchar(255), rows bigint, reserved varchar(20), data varchar(20), index_size varchar(20), unused varchar(20))
    exec sp_MSforeachtable "insert into #t exec sp_spaceused '?'"
    select name as 表名,rows as  行数,
    ltrim(str(convert(decimal(18,2),replace(reserved,' KB',''))/1024)) + 'MB' as 总分配磁盘空间,
    ltrim(str(convert(decimal(18,2),replace(data,' KB',''))/1024)) + 'MB' as 数据占用磁盘空间,
    ltrim(str(convert(decimal(18,2),replace(index_size,' KB',''))/1024)) + 'MB' as 索引占用磁盘空间,
    unused as 可用空间
    from #t  ORDER BY 行数 desc
    select count(1) as 表数量,sum(rows) as 总行数,sum(convert(int,replace(reserved,' KB',''))/1024) as '总占用空间(MB)',sum(convert(int,replace(data,' KB',''))/1024) as '数据总占用空间(MB)',sum(convert(int,replace(index_size,' KB',''))/1024) as '索引总占用空间(MB)' from #t

  • 相关阅读:
    Python----路由器远程控制
    进程和线程的区别
    tengine日志切割-配置分钟级别日志自动切割
    grep每次读取多大的文本
    bc 进制间转换
    二分法猜数字
    What is the difference between HTTP_CLIENT_IP and HTTP_X_FORWARDED_FOR
    Nginx配置两份日志记录
    Nginx启动报错误unlink() “nginx.pid” failed (2: No such file or directory)
    Mysql 数据库crash恢复
  • 原文地址:https://www.cnblogs.com/llbofchina/p/3689367.html
Copyright © 2011-2022 走看看