SQL Server 数据库备份实践

备份类型

在备份 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

结论

备份是保障数据安全的重要措施。定期备份并测试备份是否可用,可以在数据丢失时快速恢复业务。

数据库标签