1.备份数据管理介绍
备份是数据库管理的重要组成部分,能够帮助数据库管理员保护数据库免受不良操作、意外删除和硬件故障等不利因素的影响。SQL Server 提供了一系列工具和功能,使数据备份更加容易和有效。
数据备份是数据库中最重要的维护任务之一。适当的备份策略可以确保数据不会因丢失或损坏而导致业务中断。因此,备份策略需要经过充分的计划和审查,确保其与企业业务需求的相符。SQL Server 提供了全面的活动备份和恢复解决方案,可帮助数据管理员保护企业数据,同时实现快速、高效的数据备份和恢复。
2. SQL Server备份策略
2.1 定义备份策略
定义备份策略是确保许多数据问题的关键,比如可能出现的硬件故障、用户操作错误、病毒或安全攻击等等。例如,许多企业将每个数据库备份到单独的文件,以便在灾难情况下能够修复单个数据库而不是整个服务器。
在定义备份策略时,通常需要定义以下内容:
备份类型 - 完全备份、差异备份、日志备份等。
备份位置 - 确定备份应存储在哪里。
时间表 - 确定何时运行备份作业。
保留期 - 确定备份应保留多长时间。
2.2 备份类型
SQL Server 有三种备份类型:完全备份、差异备份和日志备份。
2.2.1 完全备份
完全备份是备份整个数据库的一种方式。建议在创建新数据库时进行完全备份。可以使用以下代码创建完全备份:
BACKUP DATABASE [AdventureWorks2019]
TO DISK = 'C:\AdventureWorks2019.bak'
WITH INIT;
2.2.2 差异备份
差异备份只备份在上次完全备份后更改的内容。这可减少备份的大小和发布的存储空间。差异备份可以与完全备份相结合,以恢复到特定的时间点。可以使用以下代码创建差异备份:
BACKUP DATABASE [AdventureWorks2019]
TO DISK = 'C:\AdventureWorks2019_Diff.bak'
WITH DIFFERENTIAL;
2.2.3 日志备份
日志备份记录自前一个日志备份或完全备份以来的所有事务。这种备份是指非占用性备份,因为备份可以在线进行,无需停止数据库。可以使用以下代码创建日志备份:
BACKUP LOG [AdventureWorks2019]
TO DISK = 'C:\AdventureWorks2019_Log.bak';
2.3 备份位置
可以将备份存储在本地磁盘、网络共享或 Azure Blob 存储中。在选择位置时,请确保存储介质的可靠性和安全性。
2.3.1 本地磁盘
本地磁盘是存储备份最常见的位置。可以使用以下代码指定磁盘位置:
BACKUP DATABASE [AdventureWorks2019]
TO DISK = 'C:\AdventureWorks2019.bak';
2.3.2 网络共享
如果需要在多个服务器之间共享备份文件,则应将文件存储在网络共享上。可以使用以下代码指定网络共享位置:
BACKUP DATABASE [AdventureWorks2019]
TO DISK = '\\BackupServer\BackupShare\AdventureWorks2019.bak';
2.3.3 Azure Blob 存储
可以将备份文件存储在云中,例如 Azure Blob 存储。这种方法可以提供高可用性和可伸缩性,并将备份文件落地到 Azure 中,使其外部媒体和失灵因素等不受影响。可以使用以下 Transact-SQL 语句在 Azure Blob 存储中备份数据库:
BACKUP DATABASE [AdventureWorks2019]
TO URL = 'https://.blob.core.windows.net//AdventureWorks2019.bak'
WITH CREDENTIAL = '';
2.4 时间表
当定期运行备份作业时,应谨慎考虑计划。在高峰时间或需要较少维护窗口的时段不应运行备份作业。可以使用 SQL Server 代理任务计划程序来计划备份作业。
2.4.1 SQL Server 代理任务计划程序
SQL Server 代理任务计划程序允许在特定的时间段内自动运行作业。可以使用以下步骤创建代理任务计划程序:
在对象资源管理器中,展开“SQL Server 代理”。
右键单击“作业”,然后单击“新建作业”。
在“新建作业”对话框中指定作业名称并选择要使用的数据库。
转到“步骤”选项卡,然后单击“新建”添加新的步骤。
输入步骤名称并选择“类型”。
在“命令”框中输入适当的备份 Transact-SQL。
在“调度程序”选项卡中指定何时运行作业。
单击“确定”。
2.5 保留期
保留期是指备份应在备份集中保留的时间。在保留期结束时,SQL Server 将此备份视为过时并删除。保留期可以通过设置各种期限来修改,以便满足所需的恢复时间。可以使用以下选项来管理备份集的过期日期:
CHECKSUM - 验证备份集的完整性。
NO_CHECKSUM - 禁用完整性检查。
FORMAT - 使用 SQL Server 2000 格式的备份文件。
NOFORMAT - 禁用格式化操作,使备份文件保持与其前身相同的格式。
MEDIADESCRIPTION - 提供有关备份集的详细信息。
MEDIANAME - 提供用于备份集的磁盘或磁带名称。
NAMES - 指定备份集的名称。这个名称不同于备份集的文件名。
3. SQL Server恢复策略
3.1 恢复顺序
在 SQL Server 中,还原是用来恢复损坏或删除的数据库或文件的过程。恢复必须按正确的顺序完成,以确保数据完整性和一致性。在执行恢复过程时,应按照以下顺序执行每个步骤:
完全备份。
最新的差异备份(如果存在)。
所有的日志备份(如果存在)。
3.2 恢复数据库
可以使用 SQL Server 管理工具或 Transact-SQL 语句来恢复数据库。
3.2.1 SQL Server 管理工具
可以使用 SQL Server 管理工具来恢复数据库。可以按照以下步骤使用 SQL Server 管理工具进行恢复。
在对象资源管理器中,右键单击要恢复的数据库并单击“任务”,然后单击“还原”。
在“源”选项卡中选择备份文件。
单击“一般”选项卡并选择要从备份还原的数据库名称。
选中“还原选项”选项卡并选择恢复选项。
单击“确定”。
3.2.2 Transact-SQL 语句
可以使用 Transact-SQL 语句来恢复数据库。可以按照以下步骤使用 Transact-SQL 语句进行恢复。
RESTORE DATABASE [AdventureWorks2019]
FROM DISK = 'C:\AdventureWorks2019.bak'
WITH REPLACE, RECOVERY;
将会还原备份,替换现有数据库以及还原最新的交易日志:
RESTORE DATABASE [AdventureWorks2019]
FROM DISK = 'C:\AdventureWorks2019.bak'
WITH NORECOVERY;
RESTORE LOG [AdventureWorks2019]
FROM DISK = 'C:\AdventureWorks2019_Log.bak'
WITH RECOVERY;
3.3 恢复到特定时间点
可以使用最近的完全备份和所有差异和日志备份将数据库还原到特定时间点。可以在还原过程中指定还原到特定时间点的时间。
可以使用以下代码来将数据库还原到特定时间点:
RESTORE DATABASE [AdventureWorks2019]
FROM DISK = 'C:\AdventureWorks2019.bak'
WITH NORECOVERY;
RESTORE LOG [AdventureWorks2019]
FROM DISK = 'C:\AdventureWorks2019_Log.bak'
WITH STOPAT = '2021-01-12 23:59:59.000', RECOVERY;
4. 总结
SQL Server 提供了全面的备份和恢复解决方案,可帮助数据管理员保护企业数据,并实现快速,高效的数据备份和恢复。在定义备份策略时,需要考虑备份类型、备份位置、时间表和保留期。在恢复过程中,必须遵循正确的顺序,以确保数据完整性和一致性。可以使用 SQL Server 管理工具或 Transact-SQL 语句来恢复数据库。