King

business intelligence ,is my love。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在项目的开发中,备份是一个很重要的操作和良好的开发习惯,下面我们就针对BI相关项目的备份说一下备份策略

前端:Cognos

后端:SSIS+View+Procedure

服务器A装了Cognos内容库,Cognos 相关组件

服务器B部署了DW和ETL

下面我们就来说一说备份步骤

1:备份Cognos相关内容

 Cognos内容库+cognos模型文件(FM/TR)

 Cognos用户认证

2:备份DW相关内容

ODS库+DW库+SSIS工程文件

----------------------------------------------可能用到的相关技术1---------------------------------------------------------------------------------------

备份SQLSERVER数据库的存储过程脚本

USE [Cognos_Logn]
GO

/****** Object:  StoredProcedure [dbo].[BackupDatabase]    Script Date: 08/13/2015 15:47:21 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[BackupDatabase] 
as
DECLARE @FullPath varchar(1000) 
DECLARE @FolderPath varchar(1000) 
set @FolderPath='E:\cognos_backup\'
set @FullPath = @FolderPath+ 'Cognos_Logn_'+replace(CONVERT(char(10),GETDATE(),120),'-','')+ '.bak'
backup database [Cognos_Logn] to disk=@FullPath WITH INIT 
return



GO

把需要备份的模型文件copy到指定目录的DOS命令,文件名按20150813的格式

@echo off
echo 备份开始...
echo 开始时间 %date%  %time% >E:\cognos_backup\Model_%date:~0,4%%date:~5,2%%date:~8,2%.log
xcopy/e/h/r/y "D:\EWELL_BI\ewell_projects" "E:\cognos_backup\Model_%date:~0,4%%date:~5,2%%date:~8,2%\" >>E:\cognos_backup\Model_%date:~0,4%%date:~5,2%%date:~8,2%.log
echo 备份结束...
echo 结束时间 %date%  %time% >>E:\cognos_backup\Model_%date:~0,4%%date:~5,2%%date:~8,2%.log

----------------------------------------------可能用到的相关技术1---------------------------------------------------------------------------------------

有了上面的代码再加上SQLServer的代理服务以及window的任务计划。我们1和2的备份都可以实现在A和B上面分别把Cognos相关备份的数据库文件每天备份到A服务器的E:\cognos_backup,以及把DW相关的ETL程序和数据

仓库备份到B服务器的E:\dw_backup下面

截止目前我们已经完成了在serverA和serverB上面的本地不同目录备份,增加了开发过程的安全性,那么这样的话还是不安全的,如果A和B有一台挂掉,或者硬盘不可恢复

的话,还是会给项目带来很大的麻烦,接下来我们就要实现在ServerA和ServerB上面实现对对应用服务器和数据服务器的相互备份

效果:即ServerA上面有cognos_backup+dw_backup ,ServerB上面也有cognos_backup+dw_backup 

so,go!

经过上面的操作,我们已经实现了ServerA上面有cognos_backup,ServerB上面有dw_backup的效果

接下来我们要做的就是

1:每天定时把ServerB上面的dw_backup复制到ServerA上面

2:每天定时把ServerA上面的cognos_backup复制到ServerB上面

那么接下来我们就需要window 定时远程复制的脚本

----------------------------------------------可能用到的相关技术2---------------------------------------------------------------------------------------

echo 注册远程会话开始时间 %date% %time% >E:\bi_backup\dw_backup.log
net use \\serverB\dw_backup /user:"admin" "123" >>E:\bi_backup\dw_backup.log
echo 注册远程会话结束时间 %date% %time% >>E:\bi_backup\dw_backup.log
echo 复制开始时间 %date% %time% >>E:\bi_backup\dw_backup.log
xcopy /e  /y \\serverB\dw_backup\* E:\bi_backup\dw_backup >>E:\bi_backup\dw_backup.log
echo 复制结束时间 %date% %time% >>E:\bi_backup\dw_backup.log
net use * /del /y >>E:\bi_backup\dw_backup.log
echo 注销远程会话 %date% %time% >>E:\bi_backup\dw_backup.log

代码解释1:

net use \\serverB\dw_backup /user:"admin" "123"
上面的命令是注册远程会话信息到服务器所分享的目录,需要注意的是

代码解释2:

echo 注册远程会话开始时间 %date% %time% >E:\bi_backup\dw_backup.log

上面的命令是把执行时间相关信息输出到指定日志文件中,需要注意的是>是代表覆盖原来文件的内容.>>是在原来文件中追加内容

由于上面的命令是文件中的第一个写入操作所以这里是覆盖,后面的写入为追加>>

代码解释3:

xcopy /e  /y \\serverB\dw_backup\* E:\bi_backup\dw_backup >>E:\bi_backup\dw_backup.log

上面的命令是复制serverB上目录dw_backup下面的所有内容到本地的E:\bi_backup\dw_backup目录下

/e是复制所有目录和子目录,包括空目录的内容

/y是默认覆盖,如果存在相同的文件或者文件夹

具体可参考

代码解释4:

net use * /del /y

上面的命令是注销远程会话信息,需要注意的是这一步骤是不可缺少的,如果我们执行了上面的命令,不注销远程会话信息,那么就会对远程服务造成安全隐患

/y 是每次都默认注销,如果不设置此参数,DOS窗口会提示我们手工选择是否确认注销会话信息

----------------------------------------------可能用到的相关技术2---------------------------------------------------------------------------------------

经过上面的操作,加上window系统的任务计划,我们就可以实现serverA 和 serverB互相备份,以达到ServerA上面有cognos_backup+dw_backup ,ServerB上面也有cognos_backup+dw_backup 的效果

我们看serverA 上面cognos的相关备份

 

dw的相关备份

 

posted on 2015-08-13 16:23  kingstudy  阅读(550)  评论(0编辑  收藏  举报