作为数据库管理员最最痛苦的莫过于,当数据库宕机的时候需要找备份,但在这个时候突然发现备份文件也是坏的,这就意味着数据会丢失,为此可能会丢掉职位,饭碗不保,所以为此,我们一定要保证好备份的完整性,一般发生这种情况的原因莫过于一下几种:

1、备份文件和数据库放在同一个(或一组)的物理磁盘上。磁盘出现故障,备份也保不住了。

2、备份介质随坏,或者做的是网络备份,数据在网络传输中发生了损坏。

3、数据库在做完整备份、文件备份或者文件组备份的时候,里面的内容就已经有了随坏。

所以基于此,我们要避免的就是以上三种情况的发生,此外还有一种情况就是SQL Server在做数据库备份的时候为节省时间,基本只是很简单的把数据页面拷贝下来,不会做一致性检查。但是在恢复的时候,需要将数据库恢复(Recover)到事务一致性的一个时间点。如果备份中的损坏妨碍了SQL Server的前滚后滚(Redo和Undo)、恢复动作就会遇到错误,这时候我们该如何做呢?

其实在现实坏境中,遇到此问题大部分是硬件错误导致,但是该类错误往往会永久的随坏备份文件里的内容,在SQL 2005之前的版本,遇到此问题只能去找更早的备份。但这就意味着会有产生很多的数据丢失。

所以在SQL 2005之后引入了一个新的“忽略错误”的恢复功能,这种情况在危难的是时候可以很好的发挥作用。

该命令为:CONTINUE_AFTER_ERROR

该命令是会恢复(RESTORE)命令里的一个新选项。它将使还原操作跳过错误继续进行,并还原SQL Servr现有所有功能还原的所有内容。数据还原结束后,可以应用后续事务日志备份,将数据库恢复。如果日志恢复时遇到错误,SQL Server会在日志中报告,并且不让用户访问和操作这些事务有关的页面。数据库将在尽可能的情况相爱联机。所以大部分情况下,数据库整体还是能恢复出来,只是部分数据有可能会丢失。

数据丢失取决于遇到的错误。例如,一般数据页中的错误只会引起该页进入可可疑状态,但数据库恢复还是会继续。有问题的页面编号将被写入磁盘并记录到suspect_pages表和错误日志中,提醒管理员在恢复结束后继续处理他们。如果不设置CONTINUE_AFTER_ERROR,SQL Server只要遇到一个页面有问题,整个恢复动作都会停止。

如果错误发生在一些比较关键的地方,比如某个数据文件的文件头信息,那么恢复还是有可能完全失败,数据库无法恢复。所有这个方法只供救火的时候用,不能保证每次使用的效果。

在使用该命令完成还原数据库后,记得要检查错误日志以了解有关的详细信息。

该命令语法如下:

RESTORE DATABASE database_name
FROM backup device WITH CONTINUE_AFTER_ERROR,NORECOVERY....

管理员在忽略错误继续执行还原顺序结束时,使用DBCC CHECKDB修复数据库。要使得CHECKDB在使用RESTORE CONTINUE_AFTER_ERROR 后以最大的一致性运行,建议在DBCC CHECKDB命令中使用WITH TABLELOCK选项。在极个别情况下,可能没有没有足够的信息来修复数据库,CHECKDB也没有办法修好数据库,数据丢失将不可避免。不是说,有了RESTORE CONTINUE_AFTER_ERROR,备份坏掉也没关系。

其实最关键的是还是建立备用服务器,改变单一磁盘的尴尬。

CONTINUE_AFTER_ERROR只不过是通过命令跳过一切它能够跳过错误,将所有还能读出来的数据恢复出来,从而最大程度的挽回数据。但是有些数据对一致性要求比较高的系统这样是不能接受的。

对于这样的系统,在建立备份和选择恢复策略的时候,就要考虑到最坏的情况,预先想好方案,将损失降到最低。

可以找一台备用机,做Log Shipping,这个方法值得推荐,主要是成本低

有以下几点优点:

1、比起物理镜像之类的技术,这种方案比较经济。备用服务硬件的要求不高,只要硬盘足够大。

2、虽然SQL Server提供了若干备份校验机制,但是确保备份完整可靠性的唯一办法就是真正的去恢复它。

3、提前恢复备份,使得真正灾难发生时,只需要恢复最后一个日志备份即可。而不需要在火烧眉毛的时候,去等那漫长的完整备份恢复,可以大大节约灾难恢复时间。

4、备用机上的数据库虽然不能修改,但是可以使用standby参数将数据库恢复到只读模式。可以将一些报表查询工作转移到备用机上,减轻生产服务器的负担。

总之,数据安全非常重要,灾难恢复时间要求很短的数据库,如果没有镜像技术的保证,备用服务器非常必要的。

《SQL Server企业级平台管理实践》读书笔记——当我们的备份都已经损坏的时候该怎么办的更多相关文章

  1. 《Microsoft SQL Server企业级平台管理实践》笔记

    - 页是 SQL Server 中数据存储的基本单位,大小为 8KB. - 区是空间管理的基本单位,8个物理上连续的页的集合(64KB). - 页的类型包括: 1. Data 2. Index 3. ...

  2. 《SQL Server企业级平台管理实践》读书笔记——SQL Server中关于系统库Tempdb总结

    Tempdb系统数据库是一个全局资源,可供连接到SQL Server实例的所有用户使用. 存储的内容项: 1.用户对象 用户对象由用户显示创建.这些对象可以位于用户会话的作用域中,也可以位于创建对象所 ...

  3. 《SQL Server企业级平台管理实践》读书笔记——SQL Server如何设置自动增长和自动收缩项

    SQL Server允许用户设置数据库初始值和最大值,可以通过自动增长或者自动收缩进行配置.通过这些配置,我们可以防止数据库空间问题而导致的应用程序修改失败或者SQL Server磁盘空间耗尽的事情发 ...

  4. 《SQL Server企业级平台管理实践》读书笔记——SQL Server中收缩数据库不好用的原因

    数据库管理员有时候需要控制文件的大小,可能选择收缩文件,或者把某些数据文件情况以便从数据库里删除. 这时候我们就要使用到DBCC SHRINKFILE命令,此命令的脚本为: DBCC SHRINKFI ...

  5. 《SQL Server企业级平台管理实践》读书笔记——SQL Server中数据文件空间使用与管理

    1.表和索引存储结构 在SQL Server2005以前,一个表格是以一个B树或者一个堆(heap)存放的.每个B树或者堆,在sysindexes里面都有一条记录相对应.SQL Server2005以 ...

  6. 《SQL Server企业级平台管理实践》读书笔记——SQL Server数据库文件分配方式

    1.文件分配方式以及文件空间检查方法 最常用的检查数据文件和表大小的命令就是:sp_spaceused 此命令有三个缺陷:1.无法直观的看出每个数据文件和日志文件的使用情况.2.这个存储过程依赖SQL ...

  7. 《SQL Server企业级平台管理实践》读书笔记——几个系统库的备份与恢复

    master数据库 master作为数据库的主要数据库,记录着SQL Server系统的所有系统级信息,例如登录用户.系统配置设置.端点和凭证以及访问其他数据服务器所需要的信息.master数据库还记 ...

  8. 《SQL Server企业级平台管理实践》读书笔记——关于SQL Server数据库的还原方式

    本篇是继上篇的备份方式,本篇介绍的是还原方案,在SQL Server在2005以上现有的还原方案一般分为以下4个级别的数据还原: 1.数据库完整还原级别: 还原和恢复整个数据库.数据库在还原和恢复操作 ...

  9. [读书笔记]SQLSERVER企业级平台管理实践读书笔记01

    1. SQLSERVER信息收集 SQLDIAG 使用界面 C:\Users\Administrator>sqldiag2018/01/02 08:13:26.10 SQLDIAG Collec ...

随机推荐

  1. 重构第6天:降低字段(Push Down Field)

    理解:和提升字段正好相反,跟降低方法类似,就是把基类中,只有部分继承类需要用到的字段,降低到继承类自身去. 详解: 重构前代码: using System; using System.Collecti ...

  2. [转] 基于 Apache Mahout 构建社会化推荐引擎

    来源:http://www.ibm.com/developerworks/cn/java/j-lo-mahout/index.html 推荐引擎简介 推荐引擎利用特殊的信息过滤(IF,Informat ...

  3. strtr对用户输入的敏感词汇进行过滤

    /** * 过滤用户输入的基本数据,防止script攻击 * * @access public * @return string */ function compile_str($str) { $ar ...

  4. 配置ssh免密码连接

    建立ssh连接步骤: 1,在主机安装ssh-server,执行指令: apt-get install openssh-server 2,在主机上执行指令: netstat -atpn | grep 可 ...

  5. 转载Quandl R Package

    Quandl R Package 通过Quandl API可以快速准确地获取宏观经济数据.(https://www.quandl.com/docs/api) 分享两个国外的优秀网站 R和Python在 ...

  6. [小北De编程手记] : Lesson 08 - Selenium For C# 之 PageFactory & 团队构建

    本文想跟大家分享的是Selenium对PageObject模式的支持和自动化测试团队的构建.<Selenium For C#>系列的文章写到这里已经接近尾声了,如果之前的文章你是一篇篇的读 ...

  7. vmware mysql报kernel: EXT4-fs (dm-0): Unaligned AIO/DIO on inode 1055943 by mysqld; performance will be poor

    kernel: EXT4-fs (dm-0): Unaligned AIO/DIO on inode 1055943 by mysqld; performance will be poor

  8. [WF] Quickstart Sample

    [WF] Quickstart Sample 前言 Workflow Foundation(WF),总是给人一种很有用.可是却不知道怎么用的印象.这主要是因为前置的功课太多.要整合很多底层知识,才能完 ...

  9. swift学习笔记之-闭包

    //闭包 import UIKit /*闭包(Closures): 函数.闭包.类都是引用类型(引用类型的实例赋值给变量或常量时,得到的都是该实例的引用,而值类型的实例变量得到的是独立的值的拷贝) 1 ...

  10. Win10的分辨率问题

    个人觉得win10扁平化的界面给人全新的感觉,但安装后,发现分辨率只有1280x720.1152x864.1024x768(推荐).800x600,不管调整哪一个,都觉得分辨率还是有问题,看起来字体. ...