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来龙去脉系列之三 查询过程跟踪
我们在读写数据库文件时,当文件被读.写或者出现错误时,这些过程活动都会触发一些运行时事件.从一个用户角度来看,有些时候会关注这些事件,特别是我们调试.审核.服务维护.例如,当数据库错误出现.列数据被更 ...
随机推荐
- Shell中read命令--学习
read命令 -p(提示语句) -n(字符个数) -t(等待时间) -s(不回显) 1.基本读取read命令接收标准输入(键盘)的输入,或其他文件描述符的输入(后面在说).得到输入后,read命令将数 ...
- elk kibana查询语法
elk日志系统中kibana查询语法 单项term查询 例: 搜 Dahlen, Malone 字段field查询 field:value 例:city:Keyport, age:26 通配符 ? 匹 ...
- eclipse中将一个项目作为library导入另一个项目中
1. github上搜索viewpagerIndicator: https://github.com/JakeWharton/ViewPagerIndicator2. 下载zip包,解压,eclips ...
- Matplotlib 基本用法
1.基础应用 >>> import matplotlib.pyplot as plt >>> import numpy as np #使用np.linspace定义 ...
- ios 在使用 SDWebimage UIButton setBackgroundimage
解决方法 : 有法为此在 SDWebImage: SDWebImage / SDWebImage / UIButton+WebCache.h 导入此文件在您的类: #import <SDWebI ...
- Hadoop学习之路(二十三)MapReduce中的shuffle详解
概述 1.MapReduce 中,mapper 阶段处理的数据如何传递给 reducer 阶段,是 MapReduce 框架中 最关键的一个流程,这个流程就叫 Shuffle 2.Shuffle: 数 ...
- linux学习第九天 (Linux就该这么学)
今天讲了raid0 至少两块盘串联在一起,读写性能提升,但不具备数据备份和错误修复能力,RAID1把两块盘绑定,在写入数据时,同时写入到多块硬盘设备,raid5推荐使用,10推荐使用 LVM,今天是 ...
- virtual和abstract的区别
virtual和abstract都是用来修饰父类的,前面不能用private私有,要不然就会出现编译错误:虚拟方法或抽象方法是不能私有的. 毕竟加上virtual或abstract就是让子类重新定义 ...
- CentOS7 启动中文输入法
CentOS 系统中是带有中文输入法的(智能拼音),启动方式如下: Applications --> System Tools --> Setting --> Region &am ...
- C++探究transform算法
transform函数原型 1. template<class _InIt, class _OutIt, class _Fn1> inline _OutIt transform(_InIt ...