备份类型
在备份 SQL Server 数据库之前,需要了解几种备份类型:
全备份
全备份是对整个数据库的备份,包括数据及日志信息,并且备份操作会将日志截断。
BACKUP DATABASE databaseName
TO backup_device [ ,...n ]
[ WITH { DIFFERENTIAL | COPY_ONLY } ]
差异备份
差异备份是在上一次备份的基础之上,备份上次备份后修改的数据。
BACKUP DATABASE databaseName
TO backup_device [ ,...n ]
WITH DIFFERENTIAL
日志备份
日志备份是备份上次备份后的事务日志,用于恢复到最新的事务。
BACKUP LOG databaseName
TO backup_device [ ,...n ]
[ WITH { DIFFERENTIAL } ]
备份设备
备份设备是指 SQL Server 数据库备份的输出位置。备份设备可以为磁盘、网络目录、磁带。
备份到磁盘
备份到磁盘通常是最常见的备份方式:
BACKUP DATABASE databaseName
TO DISK = 'C:\backup\data.bak'
备份到网络目录
备份到网络目录同样很普遍,需要指定共享名:
BACKUP DATABASE databaseName
TO DISK = '\\server\share\data.bak'
备份到磁带
备份到磁带也是一种备份方式,需要使用备份软件。
备份计划
在生产环境中,需要创建定期备份计划,以防止数据丢失。我们可以使用 SQL Server Agent 来自动化备份数据库。
创建备份计划
在 SQL Server Management Studio 中,找到“SQL Server Agent”文件夹,右键单击“新建”文件夹,并单击“备份数据库任务…”。
在“通用”选项中,输入任务的名称和描述并选择数据库:
在“计划”选项中,我们可以定义备份的频率和时间:
在“备份选项”中,我们可以定义备份的选项,例如备份类型、备份设备和日志清理等:
完成所有设置之后,单击“确定”按钮以创建备份计划。
备份恢复
在数据库损坏或丢失数据时,我们可以使用备份来恢复数据库。
全备份恢复
要恢复全备份,可以按照以下步骤进行操作:
将数据库设置为单用户模式。
ALTER DATABASE databaseName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
关闭自动检查点。
ALTER DATABASE databaseName SET AUTO_CLOSE OFF
恢复数据库。
USE master
RESTORE DATABASE databaseName
FROM backup_device
[ WITH { NORECOVERY | RECOVERY } ]
将数据库设置为多用户模式。
ALTER DATABASE databaseName SET MULTI_USER
差异备份恢复
要恢复差异备份,可以按照以下步骤进行操作:
将数据库设置为单用户模式。
ALTER DATABASE databaseName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
关闭自动检查点。
ALTER DATABASE databaseName SET AUTO_CLOSE OFF
先恢复全备份,再恢复差异备份。
USE master
RESTORE DATABASE databaseName
FROM full_backup_device
WITH NORECOVERY
USE master
RESTORE DATABASE databaseName
FROM differential_backup_device
WITH RECOVERY
将数据库设置为多用户模式。
ALTER DATABASE databaseName SET MULTI_USER
日志备份恢复
要恢复日志备份,可以按照以下步骤进行操作:
将数据库设置为单用户模式。
ALTER DATABASE databaseName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
关闭自动检查点。
ALTER DATABASE databaseName SET AUTO_CLOSE OFF
先恢复全备份和差异备份,再恢复所有的日志备份。
USE master
RESTORE DATABASE databaseName
FROM full_backup_device
WITH NORECOVERY
USE master
RESTORE DATABASE databaseName
FROM differential_backup_device
WITH NORECOVERY
USE master
RESTORE LOG databaseName
FROM log_backup_device
WITH RECOVERY
将数据库设置为多用户模式。
ALTER DATABASE databaseName SET MULTI_USER
结论
备份是保障数据安全的重要措施。定期备份并测试备份是否可用,可以在数据丢失时快速恢复业务。