最近遇到了麻烦,原来近二十个功能模块库并成了一个库,一个库里的数据奇多,表也有近四百个,关系比较复杂。有的分公司有七八G的数据,这些每天都要备份,原来的备份方案也是比较好的,但由于原来是按每个DB备,压缩一下最多也就一两个G,现在如果按照原来一个数据库备一个文件的形式,这么多数据都不知道会不会出问题,但总感觉速度一定不够,而且我观察了自己试验的结果,只要超过两个G的数据量,备份系统就会奇慢,不知谁有没有达到这种程度的备份:一个数据库可以分成多个文件备,但恢复回原来的数据库时又非常方便!? 谢谢!
---------------------------------------------------------------
一个数据库不能分成多个文件备。你可以:
1。将这个数据库中不相关联的表分组,按组建库,库可以小;
2。将这个数据库中的历史数据分离出去,建历史库,库也可以小。
---------------------------------------------------------------
你需要为该数据库多建几个文件组,可以把数据量大的或是经常要备份的单独作为一个文件组,在备份和还原的时候都可以选择某个文件进行操作,注意这样需要将恢复模型改为“大容量日志记录恢复模型”,此外可以选用差异备份,但这两种是不兼容的
---------------------------------------------------------------
把数据库拆分成多个文件组,你可以对文件组单独备份,这样,备份的压力就分散了,也不会影响将来的数据库恢复。
---------------------------------------------------------------
与 p2bl(prance) 的意思基本相同,文件组的备份与还原,如果在 EM 里面作的话和数据库的备份还原类似,如果用 SQL 实现就稍微复杂些,我还是建议你在 EM 里面作,并且把备份作为一个 JOB,你就轻松了。
---------------------------------------------------------------
作一个 JOB来备份,时间选在空闲时,即轻松又不影响业务还不会犯错
---------------------------------------------------------------
不知道你是不是直接备份到磁带机上的,还有你的数据库有多大?按照我的经验,我比较习惯用完全备份+日志备份结合起来用,对于不大的数据库(<10G),写一个Script,先备份到硬盘上,然后copy to tape,然后删除,对系统的影响不会很大的,如果>10G,还是用一些专用的备份软件好,当然前面的方法也应该可行,我没试过,不过前提是你要有足够大的硬盘 :-)
1.full backup(weekly)
2.log backup(2-4 hours,如果更新频繁,可以再短些)
下面是我的一些full backup代码sample,只是SQL Script,其他的自己来吧:
declare @myTime datetime
declare @myBak varchar(50)
set @myTime=getdate()
set @myBak='e:\bk-datas\dbname'
set @myBak=@myBak+convert(char(8),@myTime,112)
set @myBak=@myBak+cast(DATEPART(hh, @myTime) as varchar(2))
set @myBak=@myBak+cast(DATEPART(mi, @myTime) as varchar(2))
set @myBak=@myBak+cast(DATEPART(ss, @myTime) as varchar(2))
set @myBak=@myBak+'.bak'
--select @myBak
backup database IISLOGS to disk=@myBak
---------------------------------------------------------------
注意要将数据库设置为full模式
---------------------------------------------------------------
现在备份怎么样了?