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

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 原文:《SQL Server企业级平台管理实践》读书笔记——几个系统库的备份与恢复master数据库 master作为数据库的主要数据库,记录着SQL Server系统的所有系统级信息,例如登录用户、系统配置设置、端点和凭证以及访问其他数据服务器所需要的信息。
+关注继续查看
原文:《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

 只有将服务器配置为复制分发服务器时才存在

此数据库。此数据库存储元数据库、各种复制的历史记录数据以及用于事务复制的事务

支持 简单

 根据您具体的复制配置决定

相关实践学习
使用交互方式创建数据表
本次实验主要介绍如何在RDS-SQLServer数据库中使用交互方式创建数据表。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
3月前
|
SQL 数据库 数据安全/隐私保护
提高效率的神器!企业级SQL审核与开发工具
NineData SQL开发企业版是一款强大的数据库管理工具,旨在解决企业在数据库管理方面所面临的各种挑战。该工具提供了一整套企业级能力,包括团队协作、权限管控、审计日志、SSO单点登录等功能。它还提供超过100条SQL规范审核,帮助企业规范使用和变更数据库。通过该工具,用户可以简化繁琐的数据库管理任务,提高工作效率。此外,企业版还提供数据安全和隐私保护功能,确保数据的安全性。用户可以通过免费试用期来了解和体验该工具的功能和特性,并根据需求选择适合的计费方式购买。 NineData SQL开发企业版能够帮助企业解决数据库管理中的挑战,提高工作效率和数据安全性。
132 0
提高效率的神器!企业级SQL审核与开发工具
|
7月前
|
SQL 分布式计算 Cloud Native
带你读《企业级云原生白皮书项目实战》——5.2.4 SQL开发参考
带你读《企业级云原生白皮书项目实战》——5.2.4 SQL开发参考
|
7月前
|
SQL 关系型数据库 MySQL
|
SQL 关系型数据库 MySQL
《SQL必知必会》读书笔记,30分钟入门SQL!(二)
本篇文章是 《SQL 必知必会》 的读书笔记,SQL必知必会的英文名叫做 Sams Teach Yourself in 10 Minutes。但是,我肯定是不能够在10分钟就能学会本书所有涉及到的sql,所以就起个名字叫30分钟学会SQL语句。 目前手边的数据库是 mysql,所以以下示例均是由 mysql 演示。由于现在大部分工具都支持语法高亮,所以以下关键字都使用小写。
|
SQL 机器学习/深度学习 人工智能
企业级数据库最佳选择!阿里云云数据库SQL Server 2019新版本重磅发布 !
2020年3月26日,阿里云云数据库SQL Server 2019版正式上线,并随之发布共享型规格族及云数据库SQL Server专属集群两个产品形态。企业客户的数据库上云有了更多选择。
1279 0
企业级数据库最佳选择!阿里云云数据库SQL Server 2019新版本重磅发布 !
|
Java Android开发 调度
|
SQL 存储 数据库
《SQL Server企业级平台管理实践》读书笔记——SQL Server数据库文件分配方式
原文:《SQL Server企业级平台管理实践》读书笔记——SQL Server数据库文件分配方式 1、文件分配方式以及文件空间检查方法 最常用的检查数据文件和表大小的命令就是:sp_spaceused 此命令有三个缺陷:1、无法直观的看出每个数据文件和日志文件的使用情况。
1042 0
|
SQL Go 数据库
《SQL Server企业级平台管理实践》读书笔记——SQL Server中收缩数据库不好用的原因
原文:《SQL Server企业级平台管理实践》读书笔记——SQL Server中收缩数据库不好用的原因 数据库管理员有时候需要控制文件的大小,可能选择收缩文件,或者把某些数据文件情况以便从数据库里删除。
1094 0
|
SQL 存储 索引
《SQL Server企业级平台管理实践》读书笔记——SQL Server中数据文件空间使用与管理
原文:《SQL Server企业级平台管理实践》读书笔记——SQL Server中数据文件空间使用与管理 1、表和索引存储结构 在SQL Server2005以前,一个表格是以一个B树或者一个堆(heap)存放的。
1245 0
推荐文章
更多