数据库的备份与恢复(一)

本文主要介绍了数据库备份的四种方式:完全备份、差异备份、事务日志备份和文件/文件组备份,以及如何在SQL Server中操作。同时,讨论了master数据库的备份与恢复,强调了其重要性和恢复的特殊步骤。用户数据库的备份与恢复过程也进行了详细说明,包括完全、差异和日志备份的恢复策略。

其实里面没有什么新的内容,主要就是这两天翻了邹老大的第一本书里面的数据库备份与恢复一章,把里面的内容自己稍微总结一下,所以里面的主要内容主要还是邹老大的内容。如果邹老大认为有侵权行为,告诉我,我删掉这个blog

一、数据库备份的与还原的四种发放

1、  完全备份:包含了指定数据库中的所有数据,生成的备份文件最大,需要处理的时间也最长。

2、  差异备份:指备份自上次完全备份,发生了更改的数据。在做差异备份前,必须至少有一次完全备份。

3、  事务日志备份:之备份自上次备份后对数据库执行的所有事务的一系列记录。这个上次的备份,可以是完全备份、差异备份或者日志备份。日志备份前,至少要有一次完全备份。

4、  文件和文件组备份:可以仅备份数据库中的某个特定数据文件或文件组,使用于把经常变化和不经常变化的数据分配到不同的文件组。

在一般进行备份时,会发现事务日志备份与文件和文件组备份不可用。那是因为在Sql

Server 2000中默认的恢复模型为简单恢复模型,是不允许使用事务日志备份、文件和文件组备份。只要吧恢复模型更改为完全或者大容量日志记录恢复模型后,这两种备份方式就可以使用了。参见下图。

 

 

注意:刚修改后,在备份模型这不能马上显示出来,需要等待一会方能显示出来。(心急是吃不了热豆腐的)

二、Master数据库的备份与还原

SQL Server2000中,master数据库记录了整个系统级别的信息,还记录了所有的登录账户和系统配置设置。所以当创建或者删除用户数据库、添加登陆或者执行其他与登录安全有关的操作,创建或者删除备份设备等应该对master数据库进行备份。

1、备份:对于master数据库的备份与普通数据库相同。Backup database master to disk=’d:/master.bak’

2、恢复:master数据库的还原相对来说比较麻烦。

         1)、master数据库损坏,那么需要重建master数据库,在microsoft sql server/80tools/binn下运行rebuildm.exe,然后指定服务器名与数据文件目录

         2)、master数据库没有损坏,那么恢复的时候,先要切换到单用户模式下启动server服务。首先,先停止mssqlserver服务;第二,在命令模式下,运行sqlservr.exe –c –m [-instancename],如果数据库使用的默认的实例名,那么就不用写实例名了。如果有实例名,那么实例名一定要写上,否则单用户启动模式启动不成功。第三,在查询分析器中运行恢复数据库的语句,restore databse master from disk =’d:/master.bak’。在登陆查询分析器的时候,会提示登陆失败,在这里不用管这个错误即可,单击‘否’即可。

三、用户数据库的备份与恢复

1、使用企业管理器:服务器组—>服务器—>数据库—>所有任务—>所有任务—>备份或者恢复数据库。在备份的时候需要先添加备份设备或者备份文件

2、完全备份:Backup database pubs to disk=’c:/完全备份.bak’

       恢复:Restore database pubs from disk=’c:/完全备份.bak’

3、差异备份:Backup database pubs to disk=’c:/差异备份.bak’ with differential

       恢复:1)进行完全恢复:

restore database pubs from disk=’c:/完全备份.bak’ with norecovery

             2)进行差异恢复:

                  restore database pubs from disk=’c:/差异备份.bak’ with recovery

     在进行第一步恢复的时候一定要指定with norecovery,否则会提示“

服务器: 消息 4306,级别 16,状态 1,行 1

先前的还原操作未指定 WITH NORECOVERY WITH STANDBY。请在除最后步骤之外的所有其它步骤中指定 WITH NORECOVERY WITH STANDBY 后,重新启动该还原序列。

服务器: 消息 3013,级别 16,状态 1,行 1

RESTORE DATABASE 操作异常终止。“错误。

4、日志备份:Backup log pubs to disk=’c:/日志备份.bak’

       还原:1)先进行完全恢复:

restore database pubs from disk=’c:/完全备份.bak’ with norecovery

             2)进行差异恢复:

                  restore database pubs from disk=’c:/差异备份.bak’ with norecovery

             3)进行日志恢复,按照时间顺序(日志备份的顺序)来进行恢复:

                  Restor log pubs from disk=’c:/日志备份.bak’ with recovery

5、数据文件或文件组备份与还原

--创建测试数据库,使用的是邹老大的代码
CREATE DATABASE db
ON PRIMARY(
         NAME='db_data',
         FILENAME= 'c:/db_data.mdf'),
FILEGROUP db_fg1(
         NAME = 'db_fg1_data',
         FILENAME = 'c:/db_fg1_data.ndf'),
FILEGROUP db_fg2(
         NAME = 'db_fg2_data',
         FILENAME = 'c:/db_fg2_data.ndf')
LOG ON(
         NAME='db_log',
         FILENAME ='c:/db.ldf')
GO
 
--在文件组db_fg1上创建表,并单独创建该文件组的备份
CREATE TABLE db.dbo.tb(id int) ON db_fg1
BACKUP DATABASE db FILEGROUP='db_fg1' TO DISK='c:/db_fg1.bak' WITH FORMAT
GO
 
在其他文件组上创建表 
CREATE TABLE db.dbo.ta(id int) ON [PRIMARY]
CREATE TABLE db.dbo.tc(id int) ON db_fg2
INSERT db.dbo.tb SELECT id FROM sysobjects
--备份每个文件组,并且备份事务日志
BACKUP DATABASE db FILEGROUP='PRIMARY' TO DISK='c:/db_primary.bak' WITH FORMAT
BACKUP DATABASE db FILEGROUP='db_fg1' TO DISK='c:/db_fg1_new.bak' WITH FORMAT
BACKUP DATABASE db FILEGROUP='db_fg2' TO DISK='c:/db_fg2.bak' WITH FORMAT
BACKUP LOG db TO DISK='c:/db_log.bak' WITH FORMAT
GO
 
--删除数据库
DROP DATABASE db
GO
 
--从文件组备份中恢复数据
RESTORE DATABASE db FILEGROUP='PRIMARY' FROM DISK='c:/db_primary.bak' WITH NORECOVERY,REPLACE
RESTORE DATABASE db FILEGROUP='db_fg1' FROM DISK='c:/db_fg1.bak' WITH NORECOVERY
RESTORE DATABASE db FILEGROUP='db_fg2' FROM DISK='c:/db_fg2.bak' WITH NORECOVERY
RESTORE LOG db FROM DISK='c:/db_log.bak' WITH RECOVERY
SELECT COUNT(*) FROM db.dbo.tb
GO
 
--删除测试数据库
DROP DATABASE db
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值