1. 概述
对于SQL Server数据库管理员而言,备份数据库是日常管理工作中最为重要的一部分。备份旨在保护数据,以便在出现故障或者意外删除操作时,管理员可以将数据还原到较早的状态。
数据库备份即将数据库中的数据、日志和对象等通过特定的格式存储到磁盘上,通常情况下,备份文件位置应选择在不同的物理目录或在独立的设备上,这样可以确保即使受到硬件损坏等因素,备份文件也不会受到影响。
2. SQL Server数据库备份类型
2.1 完全备份
完全备份指的是对数据库进行一次完整的备份,将数据库中所有的数据和日志一并备份,通常情况下,完成一次完全备份后,储存的备份数据是相对完整的、无损失的。在后续操作时,可以通过还原完全备份的方式将数据库恢复到备份完整时的状态。
完全备份的实现代码如下:
BACKUP DATABASE 数据库名 TO 数据库文件位置
2.2 差异备份
差异备份是以上一次完全备份为基础,备份本次完全备份后数据库中被修改的数据,这些数据在本次上次完全备份和本次差异备份之间的时间范围内修改。
实现差异备份的方式如下:
BACKUP DATABASE 数据库名 TO 数据库文件位置 WITH DIFFERENTIAL
2.3 日志备份
日志备份是指备份数据库日志文件,以备份日志文件中保存的数据库更新操作为基础。与完全备份和差异备份不同,日志备份可以频繁执行,通常情况下,SQL Server数据库管理员可以按需备份数据库日志文件。
执行日志备份的代码如下:
BACKUP LOG 数据库名 TO 数据库文件位置
2.4 部分备份
部分备份与完全备份不同,仅备份某些对象,例如备份某个单表或某个存储过程等。
执行部分备份的方式如下:
BACKUP DATABASE MyMusicCollection FILEGROUP = 'PRIMARY' TO MyBackupDisk
3. SQL Server数据库备份设定
3.1 定义备份计划
管理员可以在SQL Server备份设定中定义自动备份计划。通过设置备份计划,可以方便地对特定类型的备份进行自动执行,从而提高了备份工作的效率。
定义备份计划的方法如下:
从“SQL Server管理工具”中打开“SQL Server管理器”
展开“管理”节点,选择“维护计划”
点击“新建维护计划”,进入维护计划设计器
在弹出的对话框中设置计划名称、计划描述和时间等
在“选择任务”TAB页中选择要执行的任务类型和数据库对象等
在“设定”TAB页中设置备份方式、文件位置和备份设定选项等
保存并执行备份计划
3.2 指定备份路径
备份路径表示备份文件的物理存储路径,管理员可以根据需要,选择适合自己的物理目录或设备来存储备份文件,一旦数据库备份完成,备份文件将会存储到对应路径中。
指定备份路径的方式如下所示:
BACKUP DATABASE AdventureWorks2012
TO DISK = 'd:\bakfile\AdventureWorks2012_backup.bak'
WITH FORMAT;
3.3 设定备份选项
管理员可以通过SQL Server Management Studio的图形界面或者SQL代码方式设定备份选项。备份选项包括压缩、校验、复制选项等。这些选项可以根据管理员的需求设置,以提高数据保护的可靠性。
执行SQL Server备份选项的代码示例如下:
BACKUP DATABASE AdventureWorks2012
TO DISK = 'd:\bakfile\AdventureWorks2012_backup.bak'
WITH FORMAT, COMPRESSION, CHECKSUM, INIT, STATS = 10;
4. SQL Server数据库备份恢复
4.1 数据库备份还原
数据库备份还原指的是将备份文件中的数据恢复到数据库中,如果在备份完成后需要将数据恢复到某个时间点,则需要执行SQL Server备份还原操作。
数据库备份还原的代码示例如下:
-- 使用简单的数据库恢复模式来还原数据库
USE master;
GO
ALTER DATABASE AdventureWorks2012 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- 进行还原操作
RESTORE DATABASE AdventureWorks2012 FROM DISK =
'd:\bakfile\AdventureWorks2012_backup.bak'
WITH REPLACE, NORECOVERY;
GO
-- 如果需要将备份恢复到某个时间点,则需要执行以下代码
RESTORE LOG AdventureWorks2012 FROM 'd:\bakfile\AdventureWorks2012_backup.bak'
WITH STOPAT = '2014-12-13 23:59:59.000', RECOVERY;
GO
4.2 差异备份还原
差异备份还原需要先将最近的完全备份还原到数据库中,然后再根据差异备份文件中保存的修改记录还原数据库中被修改的数据。
差异备份还原的代码示例如下:
-- 还原最近的完全备份
USE master;
GO
ALTER DATABASE AdventureWorks2012 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
RESTORE DATABASE AdventureWorks2012 FROM DISK =
'd:\bakfile\AdventureWorks2012_full.bak'
WITH REPLACE, NORECOVERY;
GO
-- 根据差异备份文件还原数据库
RESTORE DATABASE AdventureWorks2012 FROM DISK =
'd:\bakfile\AdventureWorks2012_diff.bak'
WITH RECOVERY;
GO
4.3 日志备份还原
日志备份还原是指根据备份的日志文件,将数据库恢复到某个时间点的状态。恢复过程中需要先将上次的完全备份还原到数据库中,然后按照备份日志的时间顺序,将修改操作逐一恢复到数据库中。
日志备份还原的代码示例如下:
-- 还原上次的完全备份
USE master;
GO
ALTER DATABASE AdventureWorks2012 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
RESTORE DATABASE AdventureWorks2012 FROM DISK =
'd:\bakfile\AdventureWorks2012_full.bak'
WITH REPLACE, NORECOVERY;
GO
-- 按照时间顺序逐一还原备份日志文件中保存的修改操作
RESTORE LOG AdventureWorks2012 FROM DISK =
'd:\bakfile\AdventureWorks2012_log1.bak'
WITH RECOVERY;
GO
5. SQL Server备份还原库的工具
对于SQL Server数据库管理员而言,熟练使用备份还原工具可以提高管理员的工作效率和数据保护的可用性。目前,SQL Server备份还原工具非常丰富,下面介绍一些比较常用的工具。
5.1 SQL Server Management Studio
SQL Server Management Studio(SSMS)是Microsoft SQL Server的管理界面。其中提供的备份还原向导能够帮助管理员快速、精确地完成各种类型的备份还原操作。
5.2 SQLBackupAndFTP
SQLBackupAndFTP是一款功能强大、自动化的SQL Server备份还原工具,可以实现备份本地和远程SQL Server数据库,支持备份压缩,FTP上传等多种功能,支持备份自动化和自定义备份时间等高级选项。SQLBackupAndFTP的图形用户界面非常友好,易于使用。
5.3 Redgate SQL Backup Professional
Redgate SQL Backup Professional是一款备受好评的SQL Server备份还原工具,功能强大而且易于使用。它支持各种备份、还原和校验选项,可以对备份压缩,进行数据比对和校验,支持远程备份等高级选项。Redgate SQL Backup Professional还提供了完善的日志记录和报警机制。
6. 总结
SQL Server数据库备份还原是SQL Server管理工作中最为重要的一部分,不同类型的备份可以根据不同的需求进行选择。通过设定备份计划,管理员可以可靠地保护数据库。SQL Server备份还原工具可以帮助管理员快速、精确地完成备份还原操作,提高了管理员的工作效率。对于公司机房的SQL Server数据安全至关重要,因此每个DBA应该掌握SQL Server数据库备份还原的操作和常用的工具所提供的优势及对应的应用场景。