第三章 数据库备份和还原

一、数据库恢复模式

1、完整:能够让数据库恢复到出现故障的时间点和指定时间点(主要是日志文件完

整备份)

2、大容量日志:数据库日志不记录对数据修改的时间(即指定的时间点)效率高只

能通过日志恢复到故障点

3、简单:对事务日志不活跃的逻辑日志文件覆盖重复利用(日志写满后覆盖完成的

提交的事务日志)不能利用日志还原数据库,只能利用完整数据库文件恢

1)简单恢复模式 数据库备份和还原策略

数据小 数据变化不大 数据库不能恢复到出现故障的时间点(重复擦写日志文件)

完整数据库备份  完整的数据库备份还原

select count(*) from dbo.Y_档案  查看档案表条数

select * from dbo.Y_档案  查看档案表所有内容

backup database zhanglwto disk=‘D:\zhanglwDB\databackup.bak‘  备份数据库

restore databasezhanglw from disk=‘D:\zhanglwDB\databackup.bak‘ 还原数据库

backup databasezhanglw to disk=’D:\backup\databackup.bak’ with init 覆盖原有数据库

备份(无with init 为追加备份)

2)简单创建备份设备(可以创建备份设备代替完整的备份文件路径)

图形界面 “服务器设备”—“备份设备”创建然后“创建”

命令创建

use master

go

execsp_addumpdevice ‘disk’,’mybackupfile’,’c:\backup\zhanglwDB.bak’

3)中大型数据库备份还原

恢复模式(完整)能够使用事务日志恢复到出故障的那个时间点

备份策略完整备份(备份数据库和日志)+日志备份+日志备份+日志备份+日志备份

数据库恢复模式(完整)在完整数据库备份后从数据库备份开始以后的日志保留

如果从来没进行过数据库的完整备份,日志不保留和恢复简单模式一样(日志文件重复擦写)

命令还原数据库

查看数据库有几个备份

restore headeronly from disk=’c:\backup\20160121.bak’

还原数据库

restore database zhanglw fromdisk=c:\backup\20160121.bakwithfile=1,replace,norecovery

(还需要用日志再还原 所以写norecovery)

还原日志

restore logzhanglw from disk=’c:\backup\20160121.bak’ with file=2,replace,norecovery

restore log zhanglwfrom disk=’c:\backup\20160121.bak’ with file=3,replace,recovery

(还原最后一个日志需要norecovery变为recovery)

数据库损坏的情况下备份日志文件:

backup log zhanglw todisk=’c:\backup\20160121.bak’ with no_truncate

二、截断事务日志

备份日志释放了不活跃的VLF,增加了日志的可用空间

截断事务日志释放日志占用的磁盘空间

  1. backup log zhanglw to disk=’c:\backup\20160121.bak’ 将没有活跃事务的VLF变为可用

    空间日志文件不能变小

  2. backup log zhanglw with no_log 截断事务日志,收缩日志文件,释放磁盘空间
  3. 手动收缩日志文件
  4. 对数据库再进行完整备份

三、差异备份

  1. 将数据库恢复模式设置为完整
  2. 备份策略完整数据库备份+日志备份+差异备份+日志备份+差异备份+日志备份

差异备份实验

  1. 创建数据库创建表插入10条记录
  2. 完整数据库备份
  3. 插入10条记录做日志备份
  4. 插入10条记录做数据库差异备份

    backupdatabase zhanglw to disk=’c:\backup\20160121.bak’ with Differential

  5. 插入10条记录做日志备份
  6. 插入10条记录做数据库差异备份
  7. 还原选择完整备份,在选择最后一次差异备份还原即可

四、大型数据库备份策略

完整数据库备份+日志备份+主数据文件备份+日志备份+副数据文件备份+日志备份+

数据库出现故障后备份的日志

  1. 创建数据库添加一个副数据库文件zhanglw1
  2. 创建表插入10条记录
  3. 完整数据库备份

    backupdatabase zhanglw to disk=’c:\backup\20160121.bak’

  4. 插入10条记录
  5. 进行日志备份

    backuplog zhanglw to disk=’c:\backup\20160121.bak’

  6. 备份主数据库文件

    backupdatabase zhanglw file=’zhanglw’ to disk=’c:\backup\20160121.bak’

  7. 插入10条记录
  8. 备份日志
  9. 插入10条记录
  10. 备份副数据库文件zhanglw1

backup databasezhanglw file=’zhanglw1’ to disk=’c:\backup\20160121.bak’

11、插入10条记录

12、备份日志

13、插入10条记录

还原数据库的过程

  1. 备份数据库文件损坏后的日志

    backup log zhanglw todisk=’c:\backup\20160121.bak’ with no truncate

  2. 还原副数据库文件zhanglw1
  3. 选择还原文件和文件组和日志

五、使用多硬盘备份文件,提高备份速度

exec sp_addumpdevice’disk’,’a1’,’c:\a1.bak’

execsp_addumpdevice’disk’,’a2’,’e:\a2.bak’

backup database zhanglw to a1,a2 withmedianame=’a12’

还原数据库

restoredatabase zhanglw from a1,a2 with replace

六、创建数据库备份的镜像备份

  1. 创建两个备份设备

    use master

    go

    execxp_cmdshell ‘mkdir c:\backuporginal’

    execxp_cmdshell ‘mkdir c:\backupmirror’

    execsp_addumpdevice’disk’,’backuporginal’,’c:\backuporginal\backuporginal.bak’

    exec sp_addumpdevice’disk’,’backupmirror’,’e:\backupmirror\backupmirror.bak’

  2. 备份

    backup databasezhanglw to backuporginal mirror to backupmirror with format

  3. 使用其中的任意一个还原

    restore databasezhanglw from backuporginal with replace

    restoredatabase zhanglw from backupmirror with replace

七、SQL2005数据库快照

  1. 对数据库进行危险操作之前需要做快照,使用快照还原数据库
  2. 想要对某个时间点的数据库中的数据进行分析

创建数据库快照

CREATE DATABASE zhanglw1400 ON

( NAME = N‘zhanglw‘, FILENAME =

N‘c:\snapshot\zhanglw_1200.ss‘)

AS SNAPSHOT OF zhanglw

GO

恢复快照

RESTORE DATABASE zhanglw

FROM DATABASE_SNAPSHOT = ‘zhanglw1400‘

GO

八、 备份还原master数据库

1、备份系统数据库

backup databasemaster to disk=‘C:\backup\masterbackup.bak‘

2、停止SQL服务

C:\Documents andSettings\Administrator>net stop mssqlserver

3、以单用户模式启动SQLServer

4、在命令提示符下输入sqlcmd 还原master数据库

restore database master from disk=‘C:\backup\masterbackup.bak‘

时间: 2024-10-01 03:09:21

第三章 数据库备份和还原的相关文章

实现数据库备份与还原[归纳三种方法]

Java实现数据库备份与还原 [MYSQL为例] 数据库数据的备份与还原最好是使用数据库自带的客户端软件来实现, Java可以通过调用mysqldump.mysql客户端软件分别进行mysql数据库的备份还原, 当然前提是Java服务器必须安装mysql客户端软件,但是也可以通过java telnet登陆数据库服务器实现备份,关于telnet的相关资料请Google. MYSQL支持的备份方式: 1.使用SELECT INTO ...OUTFILE,例如 SQL代码 SELECT * INTO

【RAC】rac环境下的数据库备份与还原

[RAC]rac环境下的数据库备份与还原 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① rac环境下的数据库备份与还原 ② rman恢复数据库的一般步骤 ③ rac环境的简单操作 注意:本篇BLOG中代码部分需要特别关注的地方我都用***背景和红色字体来表示,比如下边的例子中,thread 1的最大归档日志号为33,thread 2的最大归档日志号为43是需要特别关注

SQL Server 数据库备份与还原

1.相同SQL Server版本(2008为例)之间数据库备份与还原 (1)数据库备份 相同SQL Server服务器版本之间数据库的备份还原操作相对来说比较简单. 首先找到需要备份的数据库实例,[右键]->[任务]->[备份...],界面下边选择备份路径,点击确定,备份成功后即可在选择的备份路径下找到后缀名为.bak的备份文件. (2)数据库还原 对于需要还原的.bak数据库文件,一般会先拷贝到 C:\Program Files\Microsoft SQL Server\MSSQL10.MS

Mysql数据库备份和还原常用的命令

Mysql数据库备份和还原常用的命令是进行Mysql数据库备份和还原的关键,没有命令,什么都无从做起,更谈不上什么备份还原,只有给系统这个命令,让它去执行,才能完成Mysql数据库备份和还原的操作,下面就是操作的常用命令. 一.备份命令 1.备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename>backupfile.sql 2.备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有

MySQL数据库备份与还原

备份数据库 1.使用mysqldump命令备份 备份一个数据库:mysqldump -u 用户名 -p密码 数据库名 [表名1,表名2...]>备份文件路径及名字.sql 如果没有表名,则备份整个数据库 eg: mysql -u root -p test studentinfo >D:\test.sql 备份多个数据库:mysqldump -u 用户名 -p --databases 数据库1,数据库2...  >  备份文件路径及名字.sql 备份所有数据库:mysqldump -u 用

数据库备份与还原的过程中介质集有2个介质簇,但只提供了1个。必须提供所有成员

在对数据库备份与还原的过程中,我遇到一个问题"介质集有2个介质簇,但只提供了1个.必须提供所有成员",下面详细的介绍一下遇到问题的经过与问题解决的方法! 一.备份与还原遇到的问题描述与解决方法: 前两天用户测试我们做的评教系统小软件,有点问题我们过去看了看,想将他们的测试数据备份一下,以便我们修改软件测试使用. 我是这样备份的,数据库备份默认有一个路径:C\...,而我又添加了一个新路径,没将默认路径删除,而是选中新路径,我就理所当然的认为数据库中的数据备份到我新加的路径下了. 今天还

[转]MySQL数据库备份和还原的常用命令小结

MySQL数据库备份和还原的常用命令小结,学习mysql的朋友可以参考下: 备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据库为带删除表的格式备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库. mysqldump ---add-drop-table -uusername -ppassword databasena

MySQL数据库备份和还原的常用命令小结

MySQL数据库备份和还原的常用命令小结,学习mysql的朋友可以参考下: 备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据库为带删除表的格式备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库. mysqldump ---add-drop-table -uusername -ppassword databasena

c# .NET 进行数据库备份和还原

本文主要内容来源stswordman的介绍,开发环境为10,数据库为08R2 原文地址http://www.cnblogs.com/stswordman/archive/2006/08/06/469002.html. //////备份方法///SqlConnection conn = new SqlConnection("Server=.;Database=master;User ID=sa;Password=sa;"); SqlCommand cmdBK = new SqlComma