金天昕
摘要:随着高校信息化建设的不断深入,高校部署上线的应用系统日益增多,其中数据库的部署以SQL Server為多,为了提高应用系统的业务可靠性,广大从业人员采取了许多技术手段来缩短故障对服务影响的时长,对于非集群部署的系统,数据库数据的恢复就成为首要需要解决的问题。而快速恢复的前提就是要做好数据库的备份。该文就这一方面进行探讨,介绍自己的一些成功做法,供同行借鉴。
关键词:信息化;数据库;备份;数据库恢复
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2020)24-0032-02
1 引言
高校信息化建设过程中,一般来说,部署业务应用的操作系统不外乎Microsoft和Linux两大类,而Microsoft类是更为常见的,特别是小型应用业务基本都选择微软的操作系统。微软服务器操作系统的版本众多,已经从Server2000发展至Server2018,每一代都在性能和功能方面有所提升,本文以使用量较大的Server2012为例,来介绍一下自己在数据库备份方面的一些经验。
2 SQL Server 数据库概况及备份类型
2.1 SQL Server数据库概况
SQL Server数据库是一个关系数据库管理系统,是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。主要特征为:
1)高性能设计,可充分利用WindowsNT的优势。
2)系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。
3)强壮的事务处理功能,采用各种方法保证数据的完整性。
4)支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。
2.2 SQL Server数据库的备份类型概述
SQL Server数据库本备份一般在概念上常用的数据备份类型有:完全备份、差异备份、事务日志备份、文件或文件组备份。
1)完全备份(Full Backup)
完全备份就是指对某一个时间点上的所有数据或应用进行的一个完全拷贝。实际应用中就是用一盘磁带对整个系统进行完全备份,包括其中的系统和所有数据。这种备份方式最大的好处就是只要用一盘磁带,就可以恢复丢失的数据。因此大大加快了系统或数据的恢复时间。
2)差异备份(Differential Backup)
差异备份是指在一次全备份后到进行差异备份的这段时间内,对那些增加或者修改文件的备份。在进行恢复时,我们只需对第一次全备份和最后一次差异备份进行恢复。差异备份在避免了另外两种备份策略缺陷的同时,又具备了它们自己的优点。
3)增量备份 (Incremental Backup )
增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加和者被修改的文件。这种备份方式最显著的优点:没有重复的备份数据,因此备份的数据量不大,备份所需的时间很短。
4)事务日志备份(Transaction log backup)
事务日志包含创建最后一个备份(可以是完整备份也可以是差异备份)之后对数据库进行的更改。因此,在进行事务日志备份前,先要进行一次完整的数据库备份才可以。
5)文件和文件组备份(File and filegroup backups)
支持备份数据库中的个别文件或文件组。这是一种相对较完善的备份过程,通常用在具有较高可用性要求的超大型数据库 (VLDB) 中。如果可用的备份时间不足以支持完整数据库备份,则可以在不同的时间备份数据库的子集。
3 SQL Server数据库备份的实现
数据库备份类型比较多,方法也比较多,除了使用内置的图形操作外,用脚本的方法更为灵活,更符合每个系统的个性化需求。下面介绍使用脚本进行备份的实现。
1)完全备份实现的脚本
exec master..xp_cmdshell 'net use w: \DatabaseBackup$ "password"/user:root',NO_OUTPUT
go
declare @s nvarchar(200),@del nvarchar(200)
select @s='',@del=''
declare datebak cursor for
select
[bak]='backup database
'+quotename(Name)+' to disk =''w:'+Name+'_'+convert(varchar(8),getdate(),112)+'.bak'' with init',
end
close datebak
deallocate datebak
go
2)差异备份实现的脚本
DiffBackup() {
echo "Today is week: `date +%a`, Start performing differential backups..." >> $LogFile 2>&1
echo >> $LogFile 2>&1