备份的唯一原因
备份的唯一原因是我们可以还原
 
当我第一次成为sqlserver数据库管理员,只要备份工作都能成功运行,我就会觉得一切都很好。我会查看sqlserver代理,保证那些作业都在运行,然后就这样了。
我想只要发生灾难了,我只需要做一个恢复。这能有多难?
 
理论上,我们使用凯德拉的5个简单问题来测试我们的备份策略,并且我们要记住会导致dba被解雇的9个注意事项。
 
在实践中,有一些小问题会困扰我们。当出现问题的时候,我们是否要还原整个数据库——即只恢复几个表还是一个完整的数据库。有些人把生产环境的数据库当做开发环境从而不小心删除了数据库,接下来的事情当然是大家都疯掉了。提前思考我们的备份计划可以使危机处理地更加容易。
 
 
在那里做恢复
​当你恢复代码(存储过程、视图、触发器等)或者表时,不要恢复到生产服务器上。 
我并不喜欢去动生产数据库,当我们面对这些事故时——你就已经有了糟糕的一天。这就是你为什么做还原,还记得吗?
让我们在不同的环境(开发或者测试)做不同的事情,远离生产环境。我也会写如何在开发、测试和生产环境中还原。 
当我们安全的恢复一个数据库后,可以很容易的把数据复制到其他的服务器上面。你可以在生产环境上通过连接服务器安全而简单的访问只读的恢复服务器上的数据库。并且,从生产数据库可以通过连接服务器把数据导到恢复数据库上。 
然后,如果要恢复的数据超过10G,那么你可能必须在生产数据库上恢复以加快速度。我们必须非常小心,并且确保你的脚本和数据库名称正确——我们不想覆盖正在工作中的数据库。这可能需要生产服务器增加额外的空间,在一个紧急情况下,我不得不把tempdb和log文件缩小到1M来释放可用空间。tempdb在一个非常快的磁盘上,并且恢复过程中没出现例如断电等其它问题,因此这次恢复完美的完成了。我们并不会总是这么好运,但这有利于我们想出更多这样的情形。 
一个警告:如果存在依赖性关系,比如一个表和其他表存在依赖关系,而你恢复了这个表,而没有恢复这个表依赖的那个表,那么这会造成伤害。我们不能说到所有的场景——真的,每种情况都是不同的。
 
执行恢复 
使用no recovery选项来恢复最近一次完整备份——这是非常重要的。
这使得数据库处于恢复状态,并且可以恢复其他的备份。如果你忘记了这两点,那么可能你就需要再一次的从头恢复了,所以在你恢复之前,请务必仔细检查。 
如果我恢复的代码或者配置表在上一次完成备份后并没有更改,那么我不会还原之后的差异备份和事务日志备份,我们的目标是尽可能快的完成还原。 
接下来,在还原差异备份后还原事务日志备份(如果你在上一次完整备份后没有差异备份),同样,不要忘了no recovery。 
用图形界面执行这一切实在是糟透了。备份越多,你还原的时间就越长,并且更加容易出错。相反,你需要脚本来管理备份文件夹,找到对应的文件并进行自动回复。在接下来的培训里我们会讨论自动还原模块。 
学习备份和还原知识,我们推荐下列这些文章: 

brent ozar的sqlserver dba训练课程翻译——第二章:手动恢复数据库的更多相关文章

  1. 翻译brent ozar的sqlserver dba训练课程——第一章:建立数据库服务器清单

    在公司里,走进销售副总裁的办公室,询问他手下有多少销售人员.不,我的意思是你并不要那么做,他们会问你销售工具为什么那么慢.  其实我的意思是,如果你能走进他的办公室问他这个问题.我敢打赌,他会马上回答 ...

  2. ORACLE AUTOMATIC STORAGE MANAGEMENT翻译-第二章 ASM instance(1)

    第二章  ASM INSTANCE ASM的类型,例如可以: 10g后ORACLE instance 类型增加了一个ASM种类.参数INSTANCE_TYPE=ASM进行设置. ASM实例启动命令: ...

  3. Gradle2.0用户指南翻译——第二章. 概述

    翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc本文翻译所在分支:https://github.com/msdx/gradledoc/tree/2 ...

  4. ORACLE AUTOMATIC STORAGE MANAGEMENT翻译-第二章ASM Instance(4)完

    ASM安全 这个小节主要描写叙述与ASM相关的各种安全配置话题,像 配置ASM须要的userids.groupids:ASM权限如 SYSOPER,SYSDBA和新的SYSASM权限,最后还有ASM ...

  5. Learning Scrapy 中文版翻译 第二章

    为了从网页中提取信息,你有必要对网页的结构做一些了解.我们将快速学习HMTL,HTML数状结构以及用XPath在网页上提取信息 HTML, DOM树结构以及XPath 让我们花一点时间来了解当用户在浏 ...

  6. Scyther-Semantics and verification of Security Protocol 翻译 (第二章 2.2.2----2.3)

    2.2.2  事件顺序 协议中的每个角色对应于事件列表,换句话说, 在属于角色 R 的协议事件集上施加结构,总的排序表示为 $ \prec $ , 如此任何角色 R∈Role 和 $\varepsil ...

  7. 1_02_MSSQL课程_T_SQL语句_手动创建数据库和表

    1. 基本的DML SQL脚本 ->简单的查询: Select 列名 From 表明 where 条件表达式 ->插入数据: Insert Into 表名(列名1,列名2,列名3..... ...

  8. 《Django By Example》第二章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:翻译完第一章后,发现翻译第二章的速 ...

  9. 计算机网络课程优秀备考PPT之第二章物理层(二)

    为了记录自己从2016.9~2017.1的<计算机网络>助教生涯,也为了及时梳理和整写笔记! 前期博客是, 计算机网络课程优秀备考PPT之第一章概述(一) 以上是<计算机网络> ...

随机推荐

  1. 《UNIX网络编程》之select IO

    select 函数的原理 select 管理者 用select来管理多个IO 一旦其中的一个或者多个IO检测到我们所感兴趣的事件, select 函数返回,返回值为检测到的事件个数 然后,遍历事件,进 ...

  2. nginx 站点80跳443配置

    server { listen 80; server_name www.furhacker.cn; location /{# return 301; rewrite ^(.*)$ https://$h ...

  3. hdu 1869

    题意是给m组人物关系,然后判断是否符合六度分离,代码主要就是三个for那里 然后要记得后面判断的时候是大于7,这题除了Florde算法,还有另外一种算法,不过我没记.... #include < ...

  4. hdu 5108

    //题意是给一个数N,然后让你求M,使得N/M为素数,并且M的值最小 //思路呢,大概有两种,一个是遍历素数求解的,不过数据太大不现实 //另外一种就是质因数求解,for循环是遍历质因数,然后whil ...

  5. charAt(i) 函数

    charAt(i) 函数 是获取字符串中i位置的字符 str.charAt(i)的意思是第i个字符在字符串str中所占的位置,输出的是数字 for (var i = 0; i < str.len ...

  6. WCF代理是怎么工作的?用代码说话

    1.WCF生成代理的方式 2.WCF代理原理 第一个问题引用 一篇Robin's博文[WCF生成客户端对象方式解析] 讲述了创建客户端服务对象的方法 1.代理构造法 a.开启服务后,添加服务引用 b. ...

  7. ASP.NET协作应用集成到trsids身份验证服务器的开发流程

    开发Actor协同模块: (参考TRSIDS4.0 协作应用集成手册[asp.net]) ASP.Net协作应用集成到IDS之前,需要开发Actor类实现协作应用回调接口中定义的本地登录.退出.用户信 ...

  8. maven自动下载jar包

    只需要修改pom文件即可.需要哪个jar包,在pom中就配置哪个(还包括手动向仓库中添加) 例如 http://blog.csdn.net/beyondlpf/article/details/8592 ...

  9. StrokeStart与StrokeEnd动画

    通过修改CAShapeLayer的StrokeStart与StrokeEnd的值来实现画图动画 效果图: 代码部分: #import "ViewController.h" @int ...

  10. jquery插件:点击拉出的右侧滑动菜单

    就是一个停留在页面右侧的滑动菜单,点击可以拉出,带回调函数.宽高位置可以参数指定.插件代码如下: (jquery的路径请自己修改) (function($){ $.fn.sideSwitch = fu ...