当前位置: 代码迷 >> Sql Server >> 请看看小弟我们公司的备份计划合理不
  详细解决方案

请看看小弟我们公司的备份计划合理不

热度:28   发布时间:2016-04-24 18:28:50.0
请看看我们公司的备份计划合理不
sql server代理下一共有四个作业:
in4完全备份,每周日3点
BACKUP DATABASE [in4] TO [In4完全备份] WITH  INIT ,  NOUNLOAD , NAME = N'in4 备份',  NOSKIP ,  STATS = 10,  NOFORMAT 

in4差异备份,每天3点除了周日
BACKUP DATABASE [in4] TO [In4完全备份] WITH  NOINIT ,  NOUNLOAD ,  DIFFERENTIAL ,  NAME = N'in4 备份',  NOSKIP ,  STATS = 10,  NOFORMAT

in4备份,一次性的
BACKUP DATABASE [in4] TO [In4完全备份] WITH  NOINIT ,  NOUNLOAD , NAME = N'in4 备份',  NOSKIP ,  STATS = 10,  NOFORMAT 

DB维护计划,一次性的
EXECUTE master.dbo.xp_sqlmaint N'-PlanID 05E85D90-2CB8-43DC-AFF9-85AE665752A3  -VrfyBackup -BkUpMedia DISK -BkUpDB "E:\In4DataBackup" -BkExt "BAK"'

代理的那个备份的作业名就是E:\In4DataBackup\Microsoft SQL Server

公司的目的是每周日一次完全备份,然后其它时间每天一次差异备份。请问:上面的备份计划是不是实现了公司的目的?
------解决方案--------------------
这样的备份策略是不错的。但是还是建议再加一个日志备份。这样的话可以将数据库还原到某个时间点上面。
------解决方案--------------------
那要看你们公司的目的是什么,然后根据这个目的,来查看这个备份计划是否合理

比如,你们公司能损失多长的数据,一天,还是半天,还是一小时,如果是一天,那么你这个备份计划基本上是合理的,如果是半天,那么你得把差异备份设置为半天的间隔
------解决方案--------------------
足够了,能承受一天损失说明没有什么太实时的数据,如果不放心可以早中晚再加三次日志备份。另外备份文件的转移计划也看一下。
------解决方案--------------------
引用:
能够承受损失一天数据的

那可以了
------解决方案--------------------
能够承受不表示乐意承受,在不增加成本的情况下,为什么不做下每小时(或更短周期)的日志备份呢?
备份计划也根据情况说话,如果数据量只有几百G,及不是每天中有23个小时都是繁忙时间,那么每天一次全备份更合理
**按今日的情况,备份存储空间应该不是限制因数
技术是死的,拟定方案的人是活的

------解决方案--------------------
建议加上日志备份,另外如果是2008及以上版本,非常规备份建议使用copy_only选项
------解决方案--------------------
bak,另外非强制但是个人建议的方式:完备后缀名用.bak,差异用.dif,日志用.trn
------解决方案--------------------
这是我在以前公司写的脚本备份命令,2008R2可用,但是你的是2000,可能需要一点调整,你参考一下吧,我这里没2000的
/*
注意:由于用GUI备份会导致备份链中断,而作业无法实现“仅复制备份”,所以使用脚本备份
create by huangzj 20120510
*/

--定义备份时间,精确到秒
DECLARE @date NVARCHAR(64)
SELECT  @date = SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 121), 1, 4) + '_'
        + SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 121), 6, 2) + '_'
        + SUBSTRING(CONVERT(VARCHAR(20), GETDATE(), 121), 9, 2) + '_'
        + CONVERT(CHAR(2), DATEPART(hh, GETDATE()))
        + CONVERT(CHAR(2), DATEPART(mi, GETDATE()))
        + CONVERT(CHAR(2), DATEPART(ss, GETDATE()))
--定义要备份的数据库名
DECLARE @db NVARCHAR(20)
SET @db = '' + 'HK_ERP_BaTa' + ''
--定义备份文件的全名
DECLARE @bakname NVARCHAR(128)
SELECT  @bakname = @db + '_' + @date
--定义备份存放路径
DECLARE @disk NVARCHAR(256)
SELECT  @disk = N'DataBak\' + @bakname + '.bak'
--定义备份描述
DECLARE @name NVARCHAR(128)
SELECT  @name = @db + '-完整 数据库 备份'
--定义错误信息
DECLARE @error NVARCHAR(128)
SELECT  @error = '验证失败。找不到数据库“' + @db + '”的备份信息。'

BACKUP DATABASE @db TO  DISK = @disk WITH  COPY_ONLY, NOFORMAT, NOINIT,  
NAME =@name, SKIP, NOREWIND, NOUNLOAD,  STATS = 10, CHECKSUM ;
DECLARE @backupSetId AS INT
SELECT  @backupSetId = position
FROM    msdb..backupset
WHERE   database_name = @db
        AND backup_set_id = ( SELECT    MAX(backup_set_id)
                              FROM      msdb..backupset
                              WHERE     database_name = @db
                            )
IF @backupSetId IS NULL 
    BEGIN
        RAISERROR(@error, 16, 1)
    END
RESTORE VERIFYONLY FROM  DISK = @disk WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND
GO

------解决方案--------------------
不应该,你可能追加到同一个文件了,所以我说建议动态生成具有可标识的文件名,不然就一直追加到同一个文件,到时候体积大,还原时很麻烦
------解决方案--------------------
引用:
这是我在以前公司写的脚本备份命令,2008R2可用,但是你的是2000,可能需要一点调整,你参考一下吧,我这里没2000的
  相关解决方案