一 内容说明

sqlserver数据库中最重要的是数据库备份和还原,当数据库出现灾难性破坏的时候,需要有最佳的恢复计划,恢复数据和恢复方案。对于已经实施完数据库备份的数据库,需要定期组织恢复演练,以便在灾难故障来临时,可以快速的恢复。

下面介绍了备份策略制定,恢复计划,还原计划。

还原主要有以下几种组合(根据自己实际情况选择):

  1. 完整恢复
  2. 完整恢复+差异恢复
  3. 完整恢复+差异恢复+日志事务恢复

二 策略制定

2.1 没有事务日志的情况

由于数据库数据量不是很大,数据库全备每天执行一次

数据库每各半小时,执行一次差异备份

2.2 数据库开启了事务模式

数据库每周星期天凌晨1点,全备数据库

数据库每天18点差异备份

数据库每30分钟,执行一次日志事务备份

三 备份步骤(作业创建)

1.1 全量备份

输入名字: auto_backup_sqlserver ,点击确认,进入作业计划里面。

clip_image001

进入 --> 维护计划 --> auto_backup_sqlserver --> "添加子计划"

按照下面方式填写

名称:km_full

说明: 全备 km_full_

计划: 需要选择具体备份策略,参考下一步

clip_image002

作业计划属性设置如下:

名称: backup_full

计划类型: 重复执行

频率: 每天,执行间隔1天

每天频率: 执行一次,时间为 1点

clip_image003

当作业属性,点击确认后,选择子计划:km_full,拖动 “备份数据库任务” 到子计划 任务窗体,然后 双机 “备份数据库任务”任务框,出现 备份数据库 任务 设置选项

连接:本地服务器连接

备份类型: 完整

数据库: 选择需要备份的数据库后,这里会变为 特定数据库字样

备份目录: 选择备份目录的文件夹 , 注意:这里全备,可以写full字样,方便清理

勾选验证备份完整性

clip_image004

1.2 记录清除

添加清理历史计划,选择 清理历史记录 任务,到窗体里面,如下图

clip_image005

选择清除备份历史记录的优先级,点击 备份数据库 任务 选择--“添加优先约束(P)”

clip_image006

根据需要 先备份,然后在删除 历史记录,如下图

clip_image007

双机 清除历史记录任务,会出现 清除历史记录任务的选项,按照下面方式设置选择8周以后的历史记录删除

clip_image008

1.3 过期数据清除

添加 清除维护任务,从面板里面拖 清除维护任务到主窗体里面,如下图:

clip_image009

双机或者邮件点击 清除维护任务,如下图

clip_image010

出现 清除维护任务 属性设置对话框

设置 文件夹: c:\bak

文件扩展名: full

删除文件: 4周

clip_image011

1.4 差异备份

点击 添加子计划,出现下面对话框:

名称: km_diff

说明: km_diff

计划: 需要点击然后日历控件设置

clip_image012

点击日历空间,出现 差异备份的配置对话框

计划类型: 重复执行

执行频率: 每天

执行时间: 1:00:00

clip_image013

在主窗体里面,拖动备份数据库 任务 ,然后右键点击编辑,出现下面对话框,完成配置后,点击确定

备份类型: 差异

数据库: 选择需要差异备份的数据库,选择完毕后,这里会出现 特定数据库

勾选 为每个数据库创建备份文件

备份文件扩展名: diff

勾选 验证备份完整性

clip_image014

1.5 差异备份记录清除

从工具箱里面 拖出 清除历史记录 任务,右键编辑,按照如下配置保存8周

clip_image015

设置 备份数据库任务成功后,然后清除历史记录,右键点击 备份数据库任务,选择添加优先约束

clip_image016

设置控制流

连接自: 备份数据库任务

连接至: 清除历史记录任务

clip_image017

设置完成控制流后,会出现一个箭头指向,如下图

clip_image018

1.6 差异备份过期数据清除

设置完 历史数据过期清除后,然后设置过期数据清理,从工具箱 拖动 清除维护任务到 主窗体

设置目录:c:\bak

设置文件扩展名: diff

勾选包括以及子文件夹

保留: 4周

clip_image019

设置控制流,从工具箱选择 清除维护任务 ,然后右击 编辑 清除历史记录任务,在控制流中,选择

连接自:清除历史记录任务

连接至: 清除维护任务

clip_image020

设置完毕后,如下图:

clip_image021

1.7 事务日志备份

点击 工具箱-- 备份数据库任务--右键点击 编辑,出现 备份数据库任务属性卡

备份类型: 事务日志

数据库: 选择指定需要备份的数据

勾选为每个数据库创建子目录

文件扩展名: trn

勾选验证备份完整性

clip_image022

1.8 事务日志历史清理

从工具箱-拖动 清除历史记录任务--右键编辑,根据下面设置,保留10周,优先级为先备份数据库任务,然后执行清理数据库记录,(控制流优先级设置,参考备份数据库部分)

clip_image023

1.9 事务日志过期数据清理

从工具箱里面 拖动 清除维护任务,右键编辑,按照如下设置后,设置优先级,先历史记录清理,然后清除维护任务

文件夹:c:\bak

扩展名: trn

保留日期:2周

clip_image024

四 还原步骤

2.1 全量还原

全量恢复的时候,右键点击需要还原的数据库 任务--还原--数据库/文件或文件组,如下图

clip_image025

选择了还原后,会出现 还原数据库的选项卡界面,选择"源设备"的路径,如下图,组件 是 数据库 类型是 完整,勾选 这个还原数据库的记录,如下图:

clip_image026

设置完常规后,选择 选项,这里选择:

勾选现有数据库

选择 回滚提交的事务,使数据库处于可以使用的状态。无法还原其它事务日志(L)

clip_image027

问题,当出现下面错误的时候,说明有人正在使用数据库,没有办法还原数据库,这个时候,需要把数据库设置到单用户模式。

clip_image028

设置数据库为单用户模式

右键点击"数据库属性"--"选项"

限制访问: single_user

clip_image029

2.2 差异还原

差异还原的时候,需要注意,先还原完整的数据库,还原完整数据库的时候,需要注意选择"

不对数据库执行任何操作,不回滚未提交的事务。可以还原其他事务日志。(RESTORE WITH NORECOVERY)

"

clip_image030

先还原完完整数据库后,然后再右键点击数据库,任务--还原,在源设备里面,选择需要恢复的差异数据文件,点击勾选

clip_image031

点击选项卡,按照下面要求选择,最后点击确定,就可以完成 差异恢复了。

clip_image032

2.3 事务日志还原

还原事务日志和还原完整数据库一样的步骤,只是在选择 源设备的时候,需要选择需要恢复的 事务日志文件,如下

clip_image033

选择“回滚未提交的事务,使数据库处于可以使用状态。无法还原其他事务日志(L)。(RESTORE WITH RECOVERY)”,表示没有其它需要恢复的差异或日志备份文件了。这里由于后面还有2个事务日志文件要恢复,所以选择了 “不对数据库执行任何操作,不回滚未提交的事务。可以还原其他事务日志”

注:只要还要还原,就一定要选择”不对数据库执行任何操作,不回滚未提交的事务。可以还原其他事务日志“,否则还原差异备份或日志备份就会出现以上的错误。

clip_image034

需要说明的是,如果后面还有需要恢复的日志事务文件,数据库的状态,会是 :(正在还原….)

clip_image035

当还原了所有的日志事务文件,最后一个事务日志需要选择 :“回滚未提交的事务,使数据库处于可以使用状态。无法还原其他事务日志(L)。(RESTORE WITH RECOVERY)”

然后点击确认,就恢复完成了。

clip_image036