一 内容说明
sqlserver数据库中最重要的是数据库备份和还原,当数据库出现灾难性破坏的时候,需要有最佳的恢复计划,恢复数据和恢复方案。对于已经实施完数据库备份的数据库,需要定期组织恢复演练,以便在灾难故障来临时,可以快速的恢复。
下面介绍了备份策略制定,恢复计划,还原计划。
还原主要有以下几种组合(根据自己实际情况选择):
- 完整恢复
- 完整恢复+差异恢复
- 完整恢复+差异恢复+日志事务恢复
二 策略制定
2.1 没有事务日志的情况
由于数据库数据量不是很大,数据库全备每天执行一次
数据库每各半小时,执行一次差异备份
2.2 数据库开启了事务模式
数据库每周星期天凌晨1点,全备数据库
数据库每天18点差异备份
数据库每30分钟,执行一次日志事务备份
三 备份步骤(作业创建)
1.1 全量备份
输入名字: auto_backup_sqlserver ,点击确认,进入作业计划里面。
进入 --> 维护计划 --> auto_backup_sqlserver --> "添加子计划"
按照下面方式填写
名称:km_full
说明: 全备 km_full_
计划: 需要选择具体备份策略,参考下一步
作业计划属性设置如下:
名称: backup_full
计划类型: 重复执行
频率: 每天,执行间隔1天
每天频率: 执行一次,时间为 1点
当作业属性,点击确认后,选择子计划:km_full,拖动 “备份数据库任务” 到子计划 任务窗体,然后 双机 “备份数据库任务”任务框,出现 备份数据库 任务 设置选项
连接:本地服务器连接
备份类型: 完整
数据库: 选择需要备份的数据库后,这里会变为 特定数据库字样
备份目录: 选择备份目录的文件夹 , 注意:这里全备,可以写full字样,方便清理
勾选验证备份完整性
1.2 记录清除
添加清理历史计划,选择 清理历史记录 任务,到窗体里面,如下图
选择清除备份历史记录的优先级,点击 备份数据库 任务 选择--“添加优先约束(P)”
根据需要 先备份,然后在删除 历史记录,如下图
双机 清除历史记录任务,会出现 清除历史记录任务的选项,按照下面方式设置选择8周以后的历史记录删除
1.3 过期数据清除
添加 清除维护任务,从面板里面拖 清除维护任务到主窗体里面,如下图:
双机或者邮件点击 清除维护任务,如下图
、
出现 清除维护任务 属性设置对话框
设置 文件夹: c:\bak
文件扩展名: full
删除文件: 4周
1.4 差异备份
点击 添加子计划,出现下面对话框:
名称: km_diff
说明: km_diff
计划: 需要点击然后日历控件设置
点击日历空间,出现 差异备份的配置对话框
计划类型: 重复执行
执行频率: 每天
执行时间: 1:00:00
在主窗体里面,拖动备份数据库 任务 ,然后右键点击编辑,出现下面对话框,完成配置后,点击确定
备份类型: 差异
数据库: 选择需要差异备份的数据库,选择完毕后,这里会出现 特定数据库
勾选 为每个数据库创建备份文件
备份文件扩展名: diff
勾选 验证备份完整性
1.5 差异备份记录清除
从工具箱里面 拖出 清除历史记录 任务,右键编辑,按照如下配置保存8周
设置 备份数据库任务成功后,然后清除历史记录,右键点击 备份数据库任务,选择添加优先约束
设置控制流
连接自: 备份数据库任务
连接至: 清除历史记录任务
设置完成控制流后,会出现一个箭头指向,如下图
1.6 差异备份过期数据清除
设置完 历史数据过期清除后,然后设置过期数据清理,从工具箱 拖动 清除维护任务到 主窗体
设置目录:c:\bak
设置文件扩展名: diff
勾选包括以及子文件夹
保留: 4周
设置控制流,从工具箱选择 清除维护任务 ,然后右击 编辑 清除历史记录任务,在控制流中,选择
连接自:清除历史记录任务
连接至: 清除维护任务
设置完毕后,如下图:
1.7 事务日志备份
点击 工具箱-- 备份数据库任务--右键点击 编辑,出现 备份数据库任务属性卡
备份类型: 事务日志
数据库: 选择指定需要备份的数据
勾选为每个数据库创建子目录
文件扩展名: trn
勾选验证备份完整性
1.8 事务日志历史清理
从工具箱-拖动 清除历史记录任务--右键编辑,根据下面设置,保留10周,优先级为先备份数据库任务,然后执行清理数据库记录,(控制流优先级设置,参考备份数据库部分)
1.9 事务日志过期数据清理
从工具箱里面 拖动 清除维护任务,右键编辑,按照如下设置后,设置优先级,先历史记录清理,然后清除维护任务
文件夹:c:\bak
扩展名: trn
保留日期:2周
四 还原步骤
2.1 全量还原
全量恢复的时候,右键点击需要还原的数据库 任务--还原--数据库/文件或文件组,如下图
选择了还原后,会出现 还原数据库的选项卡界面,选择"源设备"的路径,如下图,组件 是 数据库 类型是 完整,勾选 这个还原数据库的记录,如下图:
设置完常规后,选择 选项,这里选择:
勾选现有数据库
选择 回滚提交的事务,使数据库处于可以使用的状态。无法还原其它事务日志(L)
问题,当出现下面错误的时候,说明有人正在使用数据库,没有办法还原数据库,这个时候,需要把数据库设置到单用户模式。
设置数据库为单用户模式
右键点击"数据库属性"--"选项"
限制访问: single_user
2.2 差异还原
差异还原的时候,需要注意,先还原完整的数据库,还原完整数据库的时候,需要注意选择"
不对数据库执行任何操作,不回滚未提交的事务。可以还原其他事务日志。(RESTORE WITH NORECOVERY)
"
先还原完完整数据库后,然后再右键点击数据库,任务--还原,在源设备里面,选择需要恢复的差异数据文件,点击勾选
点击选项卡,按照下面要求选择,最后点击确定,就可以完成 差异恢复了。
2.3 事务日志还原
还原事务日志和还原完整数据库一样的步骤,只是在选择 源设备的时候,需要选择需要恢复的 事务日志文件,如下
选择“回滚未提交的事务,使数据库处于可以使用状态。无法还原其他事务日志(L)。(RESTORE WITH RECOVERY)”,表示没有其它需要恢复的差异或日志备份文件了。这里由于后面还有2个事务日志文件要恢复,所以选择了 “不对数据库执行任何操作,不回滚未提交的事务。可以还原其他事务日志”
注:只要还要还原,就一定要选择”不对数据库执行任何操作,不回滚未提交的事务。可以还原其他事务日志“,否则还原差异备份或日志备份就会出现以上的错误。
需要说明的是,如果后面还有需要恢复的日志事务文件,数据库的状态,会是 :(正在还原….)
当还原了所有的日志事务文件,最后一个事务日志需要选择 :“回滚未提交的事务,使数据库处于可以使用状态。无法还原其他事务日志(L)。(RESTORE WITH RECOVERY)”
然后点击确认,就恢复完成了。