1 引言
国家电网公司农电信息化SG186工程的实施,极大推进了县级供电企业信息化建设与发展,目前进入到“建设应用并重”、“着力深化应用”阶段。数据库系统保存有企业生产、经营、管理等方面重要数据信息,数据库系统安全性、完整性关系到整套管理信息系统能否安全、可靠稳定运行,关系到异常故障突发情况发生时能否紧急无缝恢复系统运行,这就对如何采取有效措施保证数据库系统及时有效备份、提高数据库异地自动备份完成率提出了更高的要求。
2 基本概念
DBMS(Data Base Management System,数据库管理系统)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。常见的数据库管理系统有Oracle、Sybase、Informix、Microsoft SQL Server、Microsoft Access等产品,在当今数据库市场上各以一定功能占有一席之地。
Microsoft SQL Server是一种典型的关系型数据库管理系统,可以在许多操作系统上运行,它使用Transact-SQL语言完成数据操作,是一种开放式的系统,其它系统可以与它进行完好的交互操作。目前最新版本的产品为Microsoft SQL Server 2008,它具有可靠性、可伸缩性、可用性、可管理性等特点,为用户提供了完整的数据库解决方案。
SQL(Structure Query Languge,结构化查询语言)是一种数据库专用的计算机语言,不管是上述哪种数据库,也不管数据库建立在大型主机或个人计算机上,都可以使用SQL语言来访问和操作数据库。不同种类的数据库软件SQL语法均遵循ASNI(美国国家标准协会)制定的SQL标准。
扩展存储过程简单定义为在编程过程中创建的一个外部例程。扩展存储过程的显示方式和执行方式与常规存储过程一样。可以将参数传递给扩展存储过程,而且扩展存储过程也可以返回结果和状态。
3 SQL Server扩展存储过程
SQL Server的扩展存储过程实际上是封装在DLL文件中的C函数,它们在master数据库中存储着一个封装过程(wrapper),前缀为xp_。对封装过程的访问与其他任何存储过程的访问方法相同。SQL Server可以动态装载并执行它们。编写好扩展存储过程后,固定服务器角色(sysadamin)成员即可在SQL Server服务器上注册该扩展存储过程,并将它们的执行权限授权其他用户。
xp_cmdshell 扩展存储命令是以操作系统命令行解释器的方式执行给定的命令字符串,并以文本行方式返回任何输出。授予非管理用户执行xp_cmdshell的权限。
语法:xp_cmdshell {'command_string'} [,no_output]
参数:'command_string' 是在操作系统命令行解释器上执行的命令字符串。它的数据类型为varchar(255)或nvarchar(4000),没有默认值。 'no_output' 是可选参数,表示执行给定的 command_string,但不向客户端返回任何输出。
本文中xp_cmdshell执行操作系统命令有copy、del、net命令,调用的 'net use 映射盘符 网络路径 "密码" /user:计算机名称或IP地址\用户' 命令中斜体黑字根据实际进行更改。
4 前期准备工作
在分析异地自动备份方法之前,需构建异地备份服务器,确保硬件运行环境,要求如下:
(1)备份服务器要求Windows2003server操作系统,至少满足双核至强5110、RAID50(SCSI或SAS×3×146G)、PC2-3200 ECC REG 2G要求;并安装SQLserver数据库管理系统,版本不低于SQL 2000 SP4。
(2) 备份服务器机房(下称子机房)与中心机房网络连接可靠,要求光纤直连,边缘交换机与中心交换机网络速度至少要求100M。
(3)子机房配有空调、加湿器、温湿度仪装置、防静电地板等,确保备份服务器稳定运行的室内环境。
(4)子机房室内接地系统满足要求,接地电阻不低于0.4Ω,室外布置有防雷系统,以确保恶劣天气情况下抗击直击雷及浪涌电流冲击。
(5)子机房应配有UPS不间断电源,并保证不低于3小时的放电余量,确保故障停电情况下,系统网络及服务器稳定运行。
数据库备份工作的顺利执行离不开这些最基本的要求,“细节决定成败”,事先采取措施避免一些问题的发生,事后就会事半功倍,只有满足了最基本的要求,本文所阐述的备份方法才可能安全、有效实施。
5 数据库远程异地自动备份方法
为全面实现数据库系统运程异地自动备份,我们从数据备份策略入手,依次从以下四个方面进行分析,说明该备份方法的详细过程:首先结合本地数据存储过程,进行数据库系统本机自动备份,然后根据数据库异地备份安全性方向确定实施数据传输或数据召唤步骤完成异地自动备份功能,完成备份服务器端数据库存储工作,最后定时对工作主机和备份主机进行数据清理,删除往日过期备份数据,腾出介质空间,确保该方法长期有效执行。
5.1 数据存储
大中型企业信息化水平越来越高,伴随着日常工作的正常开展,企业级数据库数据实时进行着更新,安装服务器数据库应尽量考虑安装在非系统盘符,保证数据库安全、有效、实时存储,在此基础上完成本机自动备份,自动备份应采用企业管理器SQL SERVER代理中的‘作业’项,编写数据库备份方法并调用实现本地数据库备份,这种方法的优点是可以灵活选择数据库备份名称、备份路径、备份时间,为下面的其他步骤做好了技术上的准备工作。
假如企业级数据库是ytscgl,本地备份路径设为G:\bak\,当天日期为2009年10月1日,备份数据库名称应自动标记为ytscgl20091001,实现本机备份的命令如下:
declare @filename nvarchar(100)
set @filename='G:\bak\ytscgl'+convert(char(8),getdate(),112)+'.bak'
backup database [ytscgl] to disk = @filename with init
说明:declare声明字符型变量,set为变量赋值,backup即为备份数据命令(参数init)
5.2 数据传输
所谓数据传输,就是完成本地数据库备份自动拷贝远程备份服务器实现异地备份的过程。完成该过程,主要分为三个步骤,第一,映射网络驱动器盘符和远程备份服务器建立网络上的联系;第二,利用扩展存储过程完成数据库拷贝,实现数据库远程自动备份;第三,中断本机与远程主机的联系,释放网络链路。
设定备份服务器地址192.168.0.1,用户名administrator,密码admin,临时映射备份主机D盘为网络驱动器盘符z:,对应以上步骤,命令实现方法如下:
Declare @r varchar(100)
set @r='net use z: \\192.168.0.1\d$ "admin" /user:192.168.0.1\administrator'
Declare @s varchar(50)
set @s='copy '+@filename+' z:'
exec master..xp_cmdshell @r
exec master..xp_cmdshell @s
exec master..xp_cmdshell 'net use z: /delete'
说明:@filename即为5.1步骤中设定的文件变量,上例已赋值为待远程备份数据库名称;exec master..xp_cmdshell调用SQL SERVER扩展存储过程,实现数据传输所有步骤完成。
5.3 数据召唤
所谓数据召唤,就是远程备份服务器定时自动向待备份服务器检索数据库备份信息,如果有满足条件要求的数据库备份,系统会自动把该备份拷贝到备份服务器,该步骤功能等同于步骤5.2,只是考虑服务器安全性的角度略有不同之处。
在主服务器安全性能要求比较高的情况下,远程备份主要采取数据传输模式,数据召唤只在备份服务器安全性能要求比较高且主服务器安全性能已十分加固的基础上才考虑采用。
该步骤需构建备份服务器SQL SERVER运行环境,反向调用网络驱动器,驱动器盘符为主服务器数据库本机自动备份盘符,具体执行命令可参照上述步骤。
5.4 数据清理
不管是主服务器本机自动备份,还是备份服务器远程备份,如果不定期进行数据库备份清理,再大的硬盘存储容量也难以保证日益庞大的企业数据库数据信息,因此,定期清除往期备份是保证数据库远程异地备份完成率提高的必要方式。
本文要求对一周前ytscgl数据库备份进行删除,命令如下:
declare @filename nvarchar(100)
set @filename='G:\bak\ytscgl'+convert(char(8),getdate()-7,112)+'.bak'
Declare @t varchar(50)
set @t='del '+@filename
exec master..xp_cmdshell @t
说明:@filename变量赋值为当前日期以前第7天的数据,如果创建作业,每天调用执行删除往期备份,便可保证数据库备份一直是最近一周最新的数据备份。
以上步骤相互配合、相互联系,任何一个步骤出现错误都有可能造成数据库备份失败,由于使用了xp_cmdshell 扩展存储命令,保证了各环节安全性能要求,从根本上保证了该方法的有效执行,如图1所示。
图1 扩展存储过程实现数据库远程
异地自动备份步骤关系图
6 实例
根据以上分析,结合夏邑县供电局生产经营实际情况,对使用中的ytscgl数据库采用以上方法进行远程数据备份方法实现,主服务器安装在信息中心主机房,备份服务器安装在营业厅配线间,主机房与配线间相距2公里,通过光纤相连,服务器系统均采用windows server2003。下面把该方法中命令在查询分析器中执行情况列出,如图2所示。
从结果可以看出,该方法充分发挥SQL SERVER扩展存储过程调用外部命令的强大功能,保证了远程异地备份数据库完成率的提高,极大地促进了信息化工作水平的提高。
数据库备份是实际应用系统中需要考虑的最重要的事项,数据库出现些许问题都会引起系统服务器宕机,现实工作中因数据库系统出现问题造成不必要损失的情况比比皆是,因此数据库备份技术已经是应用系统应用过程中必须考虑的重要问题,其重要性越来越突出。