sqlserver 2008 备份恢复实战

2017-03-23 07:15

一 内容说明

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

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

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

  • 完整恢复
  • 完整恢复+差异恢复
  • 完整恢复+差异恢复+日志事务恢复
  • 二 策略制定

    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