300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 《SQL Server企业级平台管理实践》读书笔记——几个系统库的备份与恢复

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

时间:2024-06-13 00:29:48

相关推荐

《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数据库。

我们集中列举下

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。