sql server 备份与恢复系列三 简单恢复模式下的备份与还原
一.概述
前面讲了备份的一些理论知识,这篇开始讲在简单恢复模式下的备份与还原。在简单模式下是不能做日志备份的,发生灾难后,数据库最后一次备份之后做的数据修改将是全部丢失的,所以在生产环境下,数据又很重要,一般不建议使用这种模式。 例如对一个数据库有5次完整数据备份,时间是t5, 之后发生灾难,就会部丢失。
当数据库越来越大,完整备份时间会越来越长,为了减少丢失风险,引入差异备份。例如下图演示:在第一次建立数据库完整备份后,建立了三次差异备份,之后再建立完整备份,从而建立新的差异基准。不管是完整备份还是差异备份,一般只能在晚间进行。如果数据比较庞大又不允许长时间数据丢失,那简单恢复模式是不能满足的。
二.备份演示
在简单恢复模式下主要的备份是完整备份和差异备份。我这里有TestLog库,库里有二个表。假设周日做一次完整备份,周一到周六晚上每天做一次差异备份,到第二周的周日时开始新的基准线。如下所示
use test exec sp_addumpdevice 'disk', 'BackupTestDevice','F:\SqlService\backup\BackupTestBackup.bak'
--设置恢复模式为简单恢复
ALTER DATABASE TestLog SET RECOVERY simple
go -- 做一次完整备份到备份设备中(备份基准) 假设在周日晚上 backup database TestLog to BackupTestDevice go
go --差异备份 周一晚 backup database TestLog to BackupTestDevice with differential go --差异备份 周二晚 backup database TestLog to BackupTestDevice with differential go --差异备份 周三晚 backup database TestLog to BackupTestDevice with differential go --差异备份 周四晚 backup database TestLog to BackupTestDevice with differential go --差异备份 周五晚 backup database TestLog to BackupTestDevice with differential go --差异备份 周六晚 backup database TestLog to BackupTestDevice with differential go --完整备份 周日晚(新基准) backup database TestLog to BackupTestDevice with differential go --差异备份 周一晚 backup database TestLog to BackupTestDevice with differential
在备份设备中查看备份集
-- 通过脚本查看
select distinct s.first_lsn,s.last_lsn,s.database_backup_lsn,s.position,
s.backup_finish_date,s.type,y.physical_device_name,s.backup_size
from msdb..backupset as s inner join
msdb..backupfile as f on f.backup_set_id=s.backup_set_id inner join
msdb..backupmediaset as m on s.media_set_id=m.media_set_id inner join
msdb..backupmediafamily as y on m.media_set_id=y.media_set_id
where s.database_name='TestLog'
order by s.position asc
三. 还原演示
将一个数据库还原,需要构造一个正确的还原顺序。在还原过程中,备份文件结尾使用norecovery事务不恢复(正在还原。。)不可读写,在最后一个备份文件结尾使用recovery事务恢复。数据库恢复正常。
-- 切换到master库 use master
--设置单用户模式(否则执行下面报错:“因为数据库正在使用,所以无法获得对数据库的独占访问权”) ALTER DATABASE TestLog SET OFFLINE WITH ROLLBACK IMMEDIATE
-- 从备份恢复一个全备份 ,norecovery(正在还原...)不可读写. file指备份集位置号 restore database TestLog from BackupTestDevice with file=1, norecovery
-- 恢复到差异备份文件3,跳过差异备份2 ,看是否备份成功 restore database TestLog from BackupTestDevice with file=3, recovery
-- 备份结束之后,结束单用户模式 ALTER database TestLog set online
下面在来演示还原差异文件,使用旧基准。还原看会怎么样
-- 从旧基准中恢复一个全备份 ,norecovery(正在还原...)不可读写. file是1 restore database TestLog from BackupTestDevice with file=1, norecovery --新基准file是8, 恢复到差异备份文件9 restore database TestLog from BackupTestDevice with file=9, recovery
总结:对于简单恢复模式,没有日志备份,恢复只需要一个完整数据库备份,以及最后一个差异备份。 对于多个差异备份文件,在还原时不需要LSN的连续性(在同一个基准内)。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JavaScript插件——pace.js的快速掌握
我们在做项目的时候,可能遇到制作 网页进度条加载 的需求。如果你感觉无从下手,那么你可以通过阅读这篇文章,快速掌握一款好用的JavaScript插件,来快速制作出炫酷的 网页进度条加载效果。 一、关于pace.js pace.js是一款优秀的JavaScript插件,通过使用pace.js,我们可以制作出不同的网页进度条加载效果。 在页面中引入Pace.js,页面就会自动监测你的请求(包括Ajax请求),在事件循环滞后,会在页面记录加载的状态以及进度情况。 pace.js为我们提供了不同的加载进度条的主题样式,你可以选择 任意颜色 和 多种动画效果 (例如简约、闪光灯,MAC OSX,左侧填充,顶部填充,计数器和弹跳等等动画效果)。这些效果我们在文章的后面都会以动图的形式展示出来,方便你在写代码的时候,进行挑选。 如果你擅长修改css动画,那你就可以做出无限种可能性的动画,为你的网站增添个性化特色! pace.js官网 pace.js源码----GitHub下载 pace.js源码----百度云下载 API----官网英文版 API----中文版 二、小白快速上手pace.js 如果你...
- 下一篇
sql server 性能调优 资源等待之网络I/O
原文: sql server 性能调优 资源等待之网络I/O 一.概述 与网络I/O相关的等待的主要是ASYNC_NETWORK_IO,是指当sql server返回数据结果集给客户端的时候,会先将结果集填充到输出缓存里(ouput cache),同时网络层会开始将输出缓存里的数据打包,由客户端接收。如果客户端接收数据包慢,sql server没有地方存放新数据结果时,这时任务进入ASYNC_NETWORK_IO等待状态。 1. 从实例级别查看ASYNC_NETWORK_IO 平均耗时:46366950.0/43014737.0=1.077ms, 最大等待时间:~40秒。 2. 重现ASYNC_NETWORK_IO等待 为了演示ASYNC_NETWORK_IO 现象,我们需要输出一个大结果集。当sql server内存完全被使用后,大量的数据填充到缓存里,此时sql server没有地方存放新数据结果,进入等待状态。 -- 一次查询100000条数据输出到客户端 SELECT TOP 100000 * FROM PUB_Stock WITH(nolock) 监听到的会话如下: 使...
相关文章
文章评论
共有0条评论来说两句吧...