500G數據庫怎麼備份?備份之前要做優化嗎?具體怎麼做?有這方面經驗的前輩請指點一下!

解决方案 »

  1.   

    我也沒有接觸過這麼大的數據備份經驗,是sql server數據朋友叫幫忙的,要怎麼樣才能備份出來?光盤是不可能備得出來了,各位有什麼好的建議,怎麼才能讓數據縮小進行備份,我想先清除日志然後備份,那樣可行嗎?清除日志對還原數據會有什麼樣的影響呢?
      

  2.   

    如果没有备份文件,日志是用来还原数据的,
    有备份文件的话,清空日志文件没有影响.
    可以先清空再收缩数据库
    backup log 数据库 with no_log
    dbcc shrinkdatabase('数据库',0,notruncate)
    如果备份还嫌大就删掉一些大表的历史记录吧.
      

  3.   

    首先謝謝gahade(与君共勉) ( ) 信誉:100 據了解數據中裝的是圖表資料,所以數據很大,是客戶的資料不能刪除舊記錄怎麼?有沒有遇到這種情況的朋友,請指點一下要怎麼才能備份出來!
      

  4.   

    存的是图片啊,怪不得这么大!
    好像这样的一般都是存路径.建几个和现有数据库一样结构的空库,然后把大表中的记录分批存储.
    比如tb表有100W记录,那就把tb中1-20W记录转至db1的tb1中,21-40W转到db2的tb2中...
    最后将tb中转走的记录删掉.定期重复这个动作.分开备份
      

  5.   

    谢谢,各位的热心回答!但到现在还没有更好的解决方案,像这样的数据库头痛啊!就像gahade(与君共勉) ( ) 信誉:100    说的正常情况下,数据库一般只会保存图片路径,呵呵,开始我听说是保图片数据的,就知道难办了!到现在如果还没有最佳的解决方案,服务器那天硬盘或者系统坏了就损失大了!希望有这方面的经验的同行出出主意吧!真的要怎么办才行?
      

  6.   


    如果没有备份文件,日志是用来还原数据的,
    有备份文件的话,清空日志文件没有影响.
    可以先清空再收缩数据库
    backup log 数据库 with no_log
    dbcc shrinkdatabase('数据库',0,notruncate)
    如果备份还嫌大就删掉一些大表的历史记录吧.
      

  7.   

    第一次说到500G的数据库。买个TB硬盘吧。
      

  8.   

    Quest公司的产品,SQL LiteSpeed,备份效率极高,大概平均可以压缩70~90%,500GB备份的话大概形成100GB的备份文件,每月做一次,配合日志备份(视情况增加差异备份),应该问题不大。
      

  9.   

    如果没有备份文件,日志是用来还原数据的,
    有备份文件的话,清空日志文件没有影响.
    可以先清空再收缩数据库
    backup log 数据库 with no_log
    dbcc shrinkdatabase('数据库',0,notruncate)
    如果备份还嫌大就删掉一些大表的历史记录吧.-----------
    同意
      

  10.   


    恩, 另外SQLsafe和RedGate也有同样的软件 (不过, 500GB的最后能到150G左右)
      

  11.   

    SQL Server 也能这么强,真强
      

  12.   

    你是要备份还是要缩小数据库?备份只需要找个大的存储介质,TB容量的也很多.如果想缩小数据库可从几个方面:
    1\缩小日志文件,上面都讲过了
    2\减小数据表的UNUSED SIZE,可用SQL语句查询出数据库所有表的记录数量以及占用空间情况.
    参考:
    --==========================================================================
    -- 说明: 本脚本用于查询当前数据库中任何表格的记录条数
    --   并将结果存入tableinfo表中,不会删除以备用户再做处理和分析
    --   但是,最后请用户删除此表。
    --==========================================================================if exists (select * from dbo.sysobjects where id = object_id([dbo].[tablespace]) and objectproperty(id, nisusertable) = 1)
    drop table [dbo].[tablespace]
    gocreate table tablespace
    (
     tablename  varchar(20),
     rowscount char(11),
     reserved varchar(18),
     data  varchar(18),
     index_size varchar(18),
     unused  varchar(18)  
    )
    godeclare @sql varchar(500)
    declare @tablename varchar(20)declare cursor1 cursorfor 
     select name from sysobjects where xtype='U'open Cursor1
    fetch next from Cursor1 into @TableNamewhile @@fetch_status = 0
    begin
     set @sql = 'insert into TableSpace '
     set @sql = @sql + ' exec sp_spaceused '''+ @TableName + ''' '
     exec (@sql)
     fetch next from Cursor1 into @TableName
    end
    close Cursor1
    deallocate Cursor1
    go--显示结果
    select * from tablespace
    --order by tablename
    --order by tablename asc   --按表名称,用于统计表
    order by rowscount desc   --按行数量,用于查看表行数
    --order by reserved desc, data desc  --按占用空间
    --order by index_size desc, reserved desc  --按索引空间查看
    godrop table TableSpace