为了顺应当前形势和更好的发展,黑基网已于9月19日正式更名为【安基网】,域名更换为www.safebase.cn,请卸载旧的APP并安装新的APP,给您带来不便,敬请理解!谢谢

黑基Web安全攻防班
安基网 首页 IT技术 电脑技术 查看内容

浅谈SQL SERVER的备份还原模式

2012-1-4 15:43| 投稿: computer

摘要: 首先明确文件复制不等同于备份 在SQL SERVER中使用先写事务日志来实现事务持续性,每个事务都先写入事务日志,然后才写入数据文件,好处在于 1 事务日志确保能够将每个事务恢复到服务器停机前...
首先明确文件复制不等同于备份 在SQL SERVER中使用先写事务日志来实现事务持续性,每个事务都先写入事务日志,然后才写入数据文件,好处在于 1 事务日志确保能够将每个事务恢复到服务器停机前的状态 2事务日志使得能够在处理事务时进行备份 3 事务日志降低了硬件故障的影响,出于安全考虑最好把事务日志和数据文件放在不同的分区 SQL SERVER的三种恢复模式 恢复模式 说明 简单 不备份事务日志 用于小型数据库和不经常更改的数据库 完整 保留所有日志,直到事务日志备份 用于生产数据库 大容量日志 完整恢复模式的补充 不将大容量日志操作写入日志 恢复模型 描述 事务持续性 大容量复制操作 简单 事务日志在检查点被截断 否,只能还原到最后 不能写入日志,性能高 大容量日志 不将select into bulk insert操作作为事务写入日志 也许只能还原到最后一次完整备份或差异备份,如果没有执行大容量复制操作将可以还原到最后一次事务日志备份 只标记,性能高,就是具体内容不记下来,只记下来做了什么事 完整 将所有事务都写入日志 是,可以还原到恢复点 速度比简单和大容量慢 数据库的还原模式 完全 对日志备份,可以还原到故障点 简单 不对日志备份,只能还原到备份点 大容量日志:折中的方案,如果没有大容量操作是可以恢复到故障点的,如果有大容量操作,则所有的大容量操作丢失 备份方法 1完全备份 (包含所有的数据信息) 2差异备份(备份至完全备份以来数据的差异量) 3日志备份(备份的日志的内容) 恢复计划 如果是数据库还原模型是完整模式则 先备份故障点的日志 再还原最新完全备份 再还原完全备份后的最新差异备份 再还原差异备份后的所有日志备份 如果数据库还原模式是简单模式 则只需要还原最新的完全备份 然后还原完全备份后的最新的一次差异备份   上图为简单恢复模式,由于没有日志备份,所以当在t5时刻发生故障,只能将数据恢复到T5   上图为完整恢复模式,由于有日志备份,所以当故障发生,先在故障点做一次日志备份,再还原Db_1数据库,再还原log_1,log_2,故障点log,就可以成功恢复数据 数据库恢复模式决定了你的备份类型 备份类型 说明 完整备份 备份完成时刻的数据库 任何其他备份的基准 差异备份 事先已执行过一次完整备份 对上一次完整备份之后所有更改的数据作备份 事务日志备份 事先已执行过一次完整备份 与windows增量备份类似 从上一次事务日志备份到当前事务日志的尾部 截断已确认的事务日志 通常备份策略是多种备份方法一起使用 策略 说明 完整备份和还原 小型数据库 数据很少改变或只读 完整+差异备份与还原 数据库频繁更改 想要最少的备份时间 完整+事务日志备份与还原 数据库和事务日志备份相结合 数据库经常更改 完整备份时间过长 完整备份和还原   只能选择任意的一个完整数据库备份进行还原,还原到10,11,12 完整备份+差异备份与还原   如果需要还原到11时的数据库状态 先还原备份1,再还原备份2 如果需要还原到12:30时的数据库状态 方法1 先还原备份2,再还原备份3 方法2 先还原备份1,再还原备份3 完整备份+日志备份与还原 如果需要还原到11时的数据库状态 完整备份1+日志备份1+日志备份2 如果需要还原到12:30时的数据库状态 方法1完整备份2+日志备份3 方法2 完整备份1+日志备份1+日志备份2+日志备份3 如果需要恢复到10:45时的状态 完整备份1+日志备份1+日志备份2 再指定到10:45的恢复即时点 常用备份和恢复语句 完全备份 backup database xscj to mybak 备份到一个文件里 backup database xscj to disk='e:\a.bak' 差异备份 要保证一定已经做过了一次完全备份 backup database xscj to mybak with differential ,nopoint 日志备份 backup log xscj to mybak with noinit 注意:还原模式为简单时,不允许做日志备份 故障点备份 实际就是日志备份,备份的是你上一次日志备份后到你的故障点之间的日志 backup log xscj to myback with no_truncate 如何去截断日志,节省磁盘空间 backup log xscj with truncate_only 从备份中恢复 恢复数据备份 restore database xscj from mybak 恢复日志备份 restore log xscj from mybak 从一个备份文件中恢复 restore database xscj from disk='c:\xs_full.bak' 如果备份集中有多个备份 restore database xscj from mybak with file=1 --recovery 还原到数据库为可以使用状态,以后再还原任何日志 --norecovery 数据库没有被还原到可用状态,要等待其他的还原 实践 --1创建一个数据库,设置数据库还原模式为完整模式 --2创建一张表,做一次完全备份 use test go create table xs( name char(10),age tinyint) go --创建备份设备 exec sp_addumpdevice 'disk','xs_bak','c:\xs_bak.bak' backup database test to xs_bak --3插入两条数据库,做一次差异备份 select * from xs insert into xs values('tom',1) insert into xs values('mary',2) backup database test to xs_bak with differential --4更新数据库做一次日志备份 update xs set age =10 where name='tom' go select * from xs go backup log test to xs_bak --5插入数据库,不做任何备份 insert into xs values('bob',3) --6损坏数据库 --停止服务,删除数据库test的数据文件 --注意不要删除日子文件,否则就无法恢复到故障点 --7要求还原到最后插入数据的状态(也就是故障点) --a 做故障点备份 backup log test to xs_bak with no_truncate --b还原最近的一次完全备份 restore database test from xs_bak with file=1,norecovery --c还原完全备份后的最近一次差异备份 restore database test from xs_bak with file=2,norecovery --d还原差异备份后的所有日子备份 restore log test from xs_bak with file=3,norecovery restore log test from xs_bak with file=4,recovery 检测 use test go select * from xs 本文出自 “逆转的前奏” 博客,请务必保留此出处http://nizhuan.blog.51cto.com/1041326/736883

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

最新

返回顶部