BI项目简单备份策略

浏览: 1922

在项目的开发中,备份是一个很重要的操作和良好的开发习惯,下面我们就针对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的相关备份

推荐 0
本文由 kingwang 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册