您的位置:首页 > 数据库

第三章 数据库备份和还原

2016-02-05 12:31 1706 查看

一、数据库恢复模式

   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'


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息