《SQL Server企业级平台管理实践》读书笔记——几个系统库的备份与恢复
master数据库
master作为数据库的主要数据库,记录着SQL Server系统的所有系统级信息,例如登录用户、系统配置设置、端点和凭证以及访问其他数据服务器所需要的信息。master数据库还记录着启动服务器实例所需要的初始化信息,每个其它数据库的主文件位置。master数据库是SQL Server启动的时候打开的第一个数据库。SQL Server是从这个数据库里找到其它数据的信息的。如果master数据库有问题,整个SQL Server都将无法启动。
master数据库本身不大,做一次备份很快。建议要经常做master的完整数据库备份,以充分保护您的数据。如果master数据库已损坏,可以通过还原master数据库的最近完整数据库备份,轻松修复已损坏的数据库。
如果由于master数据库损坏严重大无法启动服务器实例,有没有备份,这时候只能重建了。重建master数据将使的所有的系统数据库恢复到其原始状态。例如,重建master数据库会删除并重新创建msdb数据库。这将导致丢失所有的计划信息以及备份和还原历史记录。所以重建master数据库后,SQL Server就像被重装过一样。所有的用户记录都会丢失,用户数据库需要再次附加,SQL Server任务记录都要重建。这是一个很折腾的过程。重建master数据库是个万不得已的选择。
在执行任何语句或系统过程中来更改master数据库中的信息以后(例如,更改服务器范围的配置选项以后),应备份master数据库。如果在更改master数据库后没有进行备份,则自上次备份以来的更改都将在还原备份时丢失。
一下行为会更改master中元数据:
1、创建或删除用户数据库,这里不包括用户数据库自动增长以容纳新数据时,master数据时不受影响的。
2、添加或删除文件和文件组
3、添加登录或其它与登录安全相关的操作,这里不包括对数据库层面的操作,比如添加用户
4、更改服务器范围的配置选项或数据库配置选项
5、创建或删除逻辑备份设备
6、配置用于分布式查询和远程过程调用(RPC)的服务器,如添加链接服务器或远程登录。
恢复master数据库使用还是RESTORE指令。可是还原master数据库后,SQL Server实例将自动停止。我们前面讲过,master里面记录了其他所有数据库主文件的地址。SQL Server通过这个地址来寻找这些数据库。如果我们将master数据库恢复到一台新的服务器上,难免文件地址会有所变化。这时SQL Sever将找不到其它数据库。需要使用单用户模式启动SQL Server,将master数据库里信息修改成新的地址。
开启单用户模式,需要停止所有SQL Server服务(服务器实例本身除外),并停止所有SQL Server实用工具(SQL Server代理,报表服务器等)。停止服务和实用工具可以防止他们尝试访问服务器实例。否则单用户启动后,他们会占用这个用户连接,管理员反而连接不进去了。
model 数据库
创建用户数据库时,model数据库是SQL Server使用的模板。model数据库的全部内容(包括数据库选项)都会被复制到新的数据库。所以这个数据库是推荐做任何修改的。除非有目的的创建一些模板,否则不要去更改这个数据库,也不要把任何用户数据放在这个数据库里。
虽然这个数据库的内容一般不发生变化,但是在SQL Server启动的时候,要使用model数据库的某些设置创建新的tempdb。如果没有tempdb,SQL Server将无法启动。因此model数据库必须始终存在于SQL Server系统中。所以这个数据库也要备份。
还原model数据库与对用户数据执行完整数据库还原过程一样。
msdb数据库
msdb数据库用来存储计划信息以及备份与还原历史记录的信息,所以SQL Server本身,ssms和Agentd都要用到它。
SQL Server将在msdb数据库中自动维护一份完整在下备份与还原历史记录。这些信息包括执行备份一方的名称、备份时间和用来存储备份的设备或文件。SSMS利用这些信息提出计划还原数据库并应用事务日志备份。将会记录有关所有数据库备份事件,即使他们由自定义程序或第三方创建的。例如,如果使用C#程序调用SQL Server执行备份操作时,所有的事件都将记录在msdb系统表、windows应用程序日志和SQL Server错误日志中。而SQL Server代理使用的所有计划信息。包括计划的定义、排程、历史日志等信息。
默认情况下,msdb数据库使用简单恢复模式。如果要恢复用户数据库时使用msdb数据库中的所有备份与还原历史记录信息,建议对msdb数据库使用完整恢复模式,并建议考虑将msdb数据库事务日志放置在容错存储设备中。
tempdb临时库和资源数据库(Resource Databse)
SQL Server还有两个系统数据库比较特别。他们是tempdb和资源数据库。缺了这个两个数据库SQL Server页将无法启动。但是这两个库不能做数据库备份。
temdp系统数据库是一个全局资源。可供连接到SQL Server实例的所有用户使用。
每次启动SQL Server时都会重建tempdb数据库,从而在系统启动时总保持一个干净的数据库副本。连接断了以后,SQL Server会自动删除临时表和存储过程。因此tempdb数据库中不会有什么内容需要在服务关闭的时候保存下来。只要有干净的model数据库就可以。SQL Server都能够创建出一个tempdb数据库。Temdp数据本身倒不用备份。SQL Server同样也没有提供对tempdb数据库的备份和还原操作。保护好model数据库,就能保证在下次启动时,得到一个好的tempdb数据库。所以对tempdb数据库保护,转为了对model数据库的保护。
Resource数据时一个只读数据库。它包含了SQL Server中所有的系统对象。系统对象(例如sys.objects)在物理上存在于Resource数据库中。但是在逻辑上,他们出现在每个数据库的sys结构中。Resource数据库不包含任何用户或用户元数据。对于同一个版本的SQL Server。他们的Resource数据库应该都是一样的。
默认在实例下是看不到资源库的,但是Resource数据库的物理存在的,物理文件名为mssqlsystemresource.mdf和mssqlsystemresource.ldf。默认情况下,这些文件存储于目录:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL
在群集中,Resource数据库位于共享磁盘中的Data文件夹中。其实Resource数据库依赖于master数据库位置。如果管理员移动了master数据库,则必须也将Resource数据库移动到相同的位置。
因为Resource数据库从来不做修改,所以SQL Server理论上不用备份的。但是管理员不但要考虑SQL Server层面的问题。还要考虑整个系统层面的问题。难免物理磁盘损坏会发生,使得文件出现损坏。所以要通过将mssqlsystemresource.mdf文件作为二进制文件,做基于文件的备份或基于磁盘的备份。恢复时要将SQL 服务停止。手段还原mssqlsystemresource.mdf的文件备份副本。并且必须谨慎,不同版本的Resource数据库会不一样。是要使用过期版本或可能不安全的版本覆盖当前Resource数据库。
我们集中列举下
系统数据库 | 说明 | 是否支持备份 | 恢复模式 | 注释 |
master | 记录SQL Server系统的所有系统级别信息的数据库 | 支持 | 简单 |
必须经常备份Master数据库,以便根据业务需要充分 保护数据。建议使用定期备份计划,这样在大量更新 之后可以补充更多的备份 |
model | 在SQL Server实例上为所有数据库创建的模板 | 支持 | 用户可配置 |
仅在业务需要时备份model数据库,例如自定义其数据 库选项后立即备份。最佳方法是:建议根据需要创建 model数据库完整性数据库备份。由于model数据库较小 而且很少更改,因此无需备份日志 |
msdb |
SQL Server代理用来安排报警和作业以及记录操作员 信息的数据库。msdb数据库还包含历史记录表,例如 备份和还原历史记录表 |
支持 | 简单(默认值) | 更新时备份msdb数据库 |
Resource(RDB) |
包含SQL Server附带的所有系统对象副本的只读 数据库 |
不支持 |
Resource数据库位于mssqlsystemresource.mdf文件中, 该文件近包含代码。因此,SQL Server不能备份Resource数据库。 但是可以通过文件备份和磁盘备份,同样还原的时候不通过SQL Server, 还原这些备份,只能手动还原mssqlsystemresource.mdf的备份副本, 并且必须谨慎,不要使用过期版本或可能不安全的版本覆盖当前的Resource数据库 |
|
tempdb |
用于保存历史或中间结果集的工作空间, 每次启动SQL Server实例时都会重建该库,服务 器实例关闭时,将永久删除Tempdb数据库中的所有数据 |
不支持 | 简单 |
无法备份tempdb系统数据库 |
distribution |
只有将服务器配置为复制分发服务器时才存在 此数据库。此数据库存储元数据库、各种复制的历史记录数据以及用于事务复制的事务 |
支持 | 简单 |
根据您具体的复制配置决定 |
《SQL Server企业级平台管理实践》读书笔记——几个系统库的备份与恢复的更多相关文章
- 《Microsoft SQL Server企业级平台管理实践》笔记
- 页是 SQL Server 中数据存储的基本单位,大小为 8KB. - 区是空间管理的基本单位,8个物理上连续的页的集合(64KB). - 页的类型包括: 1. Data 2. Index 3. ...
- 《SQL Server企业级平台管理实践》读书笔记——SQL Server中关于系统库Tempdb总结
Tempdb系统数据库是一个全局资源,可供连接到SQL Server实例的所有用户使用. 存储的内容项: 1.用户对象 用户对象由用户显示创建.这些对象可以位于用户会话的作用域中,也可以位于创建对象所 ...
- 《SQL Server企业级平台管理实践》读书笔记——SQL Server如何设置自动增长和自动收缩项
SQL Server允许用户设置数据库初始值和最大值,可以通过自动增长或者自动收缩进行配置.通过这些配置,我们可以防止数据库空间问题而导致的应用程序修改失败或者SQL Server磁盘空间耗尽的事情发 ...
- 《SQL Server企业级平台管理实践》读书笔记——SQL Server中收缩数据库不好用的原因
数据库管理员有时候需要控制文件的大小,可能选择收缩文件,或者把某些数据文件情况以便从数据库里删除. 这时候我们就要使用到DBCC SHRINKFILE命令,此命令的脚本为: DBCC SHRINKFI ...
- 《SQL Server企业级平台管理实践》读书笔记——SQL Server中数据文件空间使用与管理
1.表和索引存储结构 在SQL Server2005以前,一个表格是以一个B树或者一个堆(heap)存放的.每个B树或者堆,在sysindexes里面都有一条记录相对应.SQL Server2005以 ...
- 《SQL Server企业级平台管理实践》读书笔记——SQL Server数据库文件分配方式
1.文件分配方式以及文件空间检查方法 最常用的检查数据文件和表大小的命令就是:sp_spaceused 此命令有三个缺陷:1.无法直观的看出每个数据文件和日志文件的使用情况.2.这个存储过程依赖SQL ...
- 《SQL Server企业级平台管理实践》读书笔记——当我们的备份都已经损坏的时候该怎么办
作为数据库管理员最最痛苦的莫过于,当数据库宕机的时候需要找备份,但在这个时候突然发现备份文件也是坏的,这就意味着数据会丢失,为此可能会丢掉职位,饭碗不保,所以为此,我们一定要保证好备份的完整性,一般发 ...
- 《SQL Server企业级平台管理实践》读书笔记——关于SQL Server数据库的还原方式
本篇是继上篇的备份方式,本篇介绍的是还原方案,在SQL Server在2005以上现有的还原方案一般分为以下4个级别的数据还原: 1.数据库完整还原级别: 还原和恢复整个数据库.数据库在还原和恢复操作 ...
- [读书笔记]SQLSERVER企业级平台管理实践读书笔记01
1. SQLSERVER信息收集 SQLDIAG 使用界面 C:\Users\Administrator>sqldiag2018/01/02 08:13:26.10 SQLDIAG Collec ...
随机推荐
- 由node-webkit想到
本人做为.NET的死忠也有些许年头.微软这几年被谷歌苹果之流打的有点招架不住..NET的前景也难免堪忧.虽然我认为就强类型语言方面,C#绝对是最强者.但是新技术的发展确实是可怕的,看看苹果几年就把no ...
- Codeforces Round #313 (Div. 1) B. Equivalent Strings
Equivalent Strings Problem's Link: http://codeforces.com/contest/559/problem/B Mean: 给定两个等长串s1,s2,判断 ...
- Silverlight开源项目与第三方控件收集
http://easysl.codeplex.com/ http://compositewpf.codeplex.com/ http://silverlight.codeplex.com/releas ...
- C#开源资源项目
一.AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面(as ...
- 比较body.onload(function())、$(document).ready(function())与$(windows).load(function)
原理对比: body.onload(function())是优先将document的DOM渲染,即将页面所有的元素(包括html标签以及所引用到的图片,flash媒体等媒体文件)加载完成,然后再执行页 ...
- C# LLSQL快速查询框架
介绍一种新类型查询方法,类似linq,lambda语法,类似标准的sql使用习惯,支持匿名类型,泛型,目前支持mssql,mysql, 切换只需要DatabaseConfig.DatabaseType ...
- BI之SSAS完整实战教程6 -- 设计维度、细化维度上:创建维度定义特性关系
前面我们使用过数据源向导.数据源视图向导.Cube向导来创建相应的对象. 本篇我们将学习使用维度向导来创建维度. 通过前面几个向导的学习,我们归纳一下共同点,主要分成两步 1. 使用某种对象类型的向导 ...
- Free Slideshow, Gallery And Lightboxes Scripts
http://bootstraphelpers.codeplex.com/SourceControl/list/changesets https://github.com/gordon-matt/Bo ...
- sql:MySQL 6.7 表,视图,存储过程结构查询
#数据库MySQL 6.7 use sakila; #查询表名 show tables; # SELECT TABLE_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA. ...
- 行转列一定要sum
--SELECT 姓名 ,-- 课程 ,-- 分数--FROM tb UNPIVOT ( 分数 FOR 课程 IN ( [语文], [数学], [物理] ) ) t --)