金天昕

摘要:隨著高校信息化建設的不斷深入,高校部署上線的應用系統日益增多,其中數據庫的部署以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