sql server 备份与恢复系列八 系统数据库备份与恢复分析
一.概述
在前面讲过"sql server 备份与恢复系列"都是集中在用户数据库上。sql server还维护着一组系统数据库,这些系统数据库对于服务器实例的运行至关重要。在每次进行系统更新后必须备份多个系统数据库。必须备份的系统数据库包括:msdb,master,model。如果使用了复制,还要备份distribution库。备份以防止系统故障时,用于还原恢复。
1.master数据库介绍
master数据库记录着所有系统级信息,如登录账户,系统配置,端点和凭据,以及访问其他数据库服务器需要的信息。还有记录实例启动时需要的初始化信息,其它数据库主文件位置,master是sql server启动时第一个打开的数据库,如果master库有问题,整个sql server无法正常启动。
master数据库不大,建议经常做完整数据库备份。如果因为master库损坏无法启动服务器实例,又没有备份,则必须重建。 重建后会删除并重新创建msdb库,导致丢失所有计划信息以及备份和还原历史记录。sql server也被重装过一样。用户记录丢失,数据库要再次附加,任务计划要重建。是一件很折腾的过程。
恢复master数据库使用的还是restore指令。还原master数据库后,sql server实例将自动停止。因为master记录了所有数据库主文件地址,通过这些地址寻找这些数据库。如果将master数据库恢复到一台新的服务器上,难免文件地址会发生变化,这时找不到地址,就需要使用单用户模式启动sql server,将master数据库里的信息修改成新的地址。
如果要启动单用户模式,首先停止所有sql server服务(服务器实例本身除外),并停止所有sql server实用工具。否则单用户启动后它们占用了这个用户连接,管理员反而连接不进去了。
2.model数据库
当创建用户数据库时,model数据库是sql server使用的模板。不推荐对该库对任务修改。虽然该库内容一般不发生变化,但sql server在启动时候,需要使用model库的某些设置创建新的tempdb。如果没有tempdb ,实例无法启动。
3. msdb数据库
msdb存储了计划信息,备份和还原历史记录信息等。默认情况下,msdb数据库使用简单恢复模式。如果在恢复用户数据库时使用msdb数据库中的备份与还原历史记录信息,建议对msdb数据库使用完整恢复模式,并建议将msdb数据库事务日志放置在容错存储设备中。
4. tempdb数据库和资源数据库
sql server还有二个系统数据库比较特别,是tempdb和资源数据库Resource Database。缺了这两个数据库, sqlserver无法启动,但它们又不能做数据库备份。tempdb系统数据库是一个全局资源,可供连接到sqlserver实例的所有用户使用。每次启动sqlserver,会重建tempdb库,保持一个干净的副本。会话连接断开后,会自动删除该会话的临时表。因此tempdb不会有什么内容需要在服务器关闭的时候保存下来。tempdb不用备份和还原操作,保护好model数据库就能保证在下次启动时,得到一个好的tempdb数据库。
Resource 数据库是一个只读数据库,它包含了sql server中的所有系统对象。例如sys.objects。Resource 数据库从来不做修改,所以sql server理论上不用备份Resource 数据库。考虑到物理磁损坏,可以做基于文件的备份或基于磁盘的备份。
二. 系统数据库备份策略
-- 查看系统数据库默认的恢复模式
SELECT name, recovery_model_desc FROM sys.databases

| 系统数据库 | 说明 | 是否支持备份 | 恢复模式 | 注释 |
| master | 记录sqlserver系统的所有系统级 信息的数据库 |
支持 | 简单 | 必须经常备份,定期备份计划,大量更新后补充备份。 |
| model | 为所有数据库创建的模板 | 支持 | 用户可配置 | 根据需要创建完整数据库备份,由于数据库较小且 很少改动,因此不必备份日志。 |
| msdb | sqlserver代理用来安排警报和作业 以及记录操作员信息的数据库。msdb 数据库还包含历史记录表,例如备份和 还原历史记录表 |
支持 | 简单 (默认值) |
更新时备份msdb数据库。 |
| Resource | 所有系统对象副本的只读数据库 | 不支持 | 不能备份Resource数据库。 | |
| tempdb | 用于保存临时或中间集的工作空间, 启动实例时会重新创建此库,关闭服务 时永久删除tempdb数据库中所有数据 |
不支持 | 简单 | 无法备份tempdb数据库。 |
| distribution |
复制分发服务器时才存在此数据库。 |
支持 | 简单 | 根据具体的复制配置决定。 |
sql server 备份与恢复系列八 系统数据库备份与恢复分析的更多相关文章
- 对Oracle 、SQL Server、MySQL、PostgreSQL数据库优缺点分析
对Oracle .SQL Server.MySQL.PostgreSQL数据库优缺点分析 Oracle Database Oracle Database,又名Oracle RDBMS,或简称Oracl ...
- SQL Server 中4个系统数据库,Master、Model、Msdb、Tempdb。
(1)Master数据库是SQL Server系统最重要的数据库,它记录了SQL Server系统的所有系统信息.这些系统信息包括所有的登录信息.系统设置信息.SQL Server的初始化信息和其他系 ...
- 如何隐藏掉SQL Server中自带系统数据库,数据表,存储过程等显示文件,只显示用户的数据库,数据表等文件
企业管理器了,----> 编辑该数据库的注册属性--->“常规”属性页下面-->“显示系统数据库和系统对象”的选项去掉
- 【SQL Server 学习系列】-- 收缩数据库文件大小
USE WebExam; GO ALTER DATABASE WebExam SET RECOVERY SIMPLE; GO -- 收缩文件到 1 MB. ); GO ALTER DATABASE W ...
- Sql Server来龙去脉系列之四 数据库和文件
在讨论数据库之前我们先要明白一个问题:什么是数据库? 数据库是若干对象的集合,这些对象用来控制和维护数据.一个经典的数据库实例仅仅包含少量的数据库,但用户一般也不会在一个实例上创建太多 ...
- Expert for SQL Server 诊断系列
Expert for SQL Server 诊断系列 Expert 诊断优化系列------------------锁是个大角色 前面几篇已经陆续从服务器的几个大块讲述了SQL SERVER数据库 ...
- Sql Server来龙去脉系列 必须知道的权限控制核心篇
最近写了<Sql Server来龙去脉系列 必须知道的权限控制基础篇>,感觉反响比较大.这可能也说明了很多程序猿对数据库权限控制方面比较感兴趣,或者某些技术点了解的没有很透彻. 有些人看 ...
- Sql Server来龙去脉系列 必须知道的权限控制基础篇
题外话:最近看到各种吐槽.NET怎么落寞..NET怎么不行了..NET工资低的帖子.我也吐槽一句:一个程序猿的自身价值不是由他选择了哪一门技术来决定,而是由他自身能创造出什么价值来决定. 在进入本篇内 ...
- Sql Server来龙去脉系列之三 查询过程跟踪
我们在读写数据库文件时,当文件被读.写或者出现错误时,这些过程活动都会触发一些运行时事件.从一个用户角度来看,有些时候会关注这些事件,特别是我们调试.审核.服务维护.例如,当数据库错误出现.列数据被更 ...
随机推荐
- Springboot08-项目单元测试(接口测试)
Springboot08-项目单元测试(接口测试) 前言 1-本文重点在于源码层面,分析Springboot单元测试的使用,对于其中的注解.方法等,不会仔细分析: 2-本文项目实例相关配置:Java- ...
- Shell 数值、字符串比较
Shell脚本中,数值与字符串比较是不同的,因此要注意(注意[]括号内参数和括号之间有一个空格). 一.数值比较 -eq 等于,如: if [ $a -eq $b ] -ne 不等于,如: if ...
- 如何禁用Chrome / Firefox /IE浏览器的Cookie
Firefox: 点击菜单按钮并点击选项 按钮. 选择 隐私 面板. 将“Firefox 将会:”这一项设置为 使用自定义历史记录设置. 取消 接受来自站点的 Cookie 选项 即可禁用 Cooki ...
- PostFix添加多个端口
/usr/local/*/config/postfix/master.cf 在/etc/services中搜索smtp,复制,添加smtp2<与上面一步对应起来的服务名>,后面为需要添加的 ...
- Vue入门---常用指令详解
Vue入门 Vue是一个MVVM(Model / View / ViewModel)的前端框架,相对于Angular来说简单.易学上手快,近两年也也别流行,发展速度较快,已经超越Angular了.比较 ...
- 基于esp32的IIC通讯
本文源码地址在:http://download.csdn.net/download/noticeable/9962029 IIC 通讯应该是当代比较常用的几种通讯方式之一,其无需特殊的IO接口,连线方 ...
- verilog HDL-并行语句之assign
线网型数据对象: 是verilog hdl常用数据对象之一,起到电路节点之间的互联作用,类似于电路板上的导线. wire是verilog hdl默认的线网型数据对象. 线网型数据对象的读操作在代码任何 ...
- MFC控件的颜色设置
在绘制控件颜色时,控件会发送WM_CTLCOLOR消息给父窗口,父窗口收到消息后,映射到OnCtlColor()函数中处理. 该函数返回一个画刷用于设置子控件的背景颜色,子控件再执行自己的CtlCol ...
- dubbo实现示例
创建MAVEN项目 项目结构: 在项目pom.xml中添加依赖 <dependency> <groupId>org.apache.zookeeper</groupId&g ...
- 读入挂(IO)
快如闪电,清华杜瑜皓的读入挂,一模一样代码,加了这个之后... 细思极恐,and 整整行!!! namespace IO{ #define BUF_SIZE 100000 #define OUT_SI ...