精华内容
下载资源
问答
  • 备份概述数据备份分类完整数据库备份文件备份部分备份差异备份日志备份事务日志备份最常用的备份方法选择备份策略和恢复模式备份策略简单恢复模式下的备份简单恢复模式下的完整数据库备份+差异数据库备份完整恢复...


    数据备份分类

    根据备份目标分类
    • 数据备份
    • 日志备份
    根据备份数据文件的范围进行分类
    • 完整数据库备份
    • 文件备份
    • 部分备份
    完整数据库备份

    原理
    复制数据库里的所有信息,通过一个单个完整备份可将数据库恢复到某个时间点的状态。但由于数据库备份是一个在线的操作,一个大的完整数据库备份需要一段时间,数据库在该段时间内还会发生变化。所以完整数据库备份还要对部分事务日志进行备份,以使恢复数据库到一个事务一致的状态。

    适用场景:小数据库

    • 简单易用
    • 速度快

    不适用场景:大数据库

    • 耗时
    • 占用大量存储空间
    从是否复制所有的数据分类
    • 完整备份
    • 差异备份
    差异备份

    差异备份原理
    差异备份基于差异,备份要求数据库之前做过一次完整备份。差异备份仅捕获自该次完整备份后发生更改的数据,这个完整备份被称为差异备份的“基准”。差异备份仅仅包括建立差异基准后更改的数据。

    差异备份相对完整备份的优点

    • 占用少量存储空间
    • 备份速度快
    • 便于频繁执行,从而降低数据丢失风险

    日志备份

    事务日志备份

    每个日志备份都包括创建备份时处于活动状态的部分事务日志以及先前日志备份中未备份的所有日志记录。不间断的日志备份序列包含数据库的完整日志链。在完整恢复模式下,连续不断的日志链可以将数据库还原到任意时间点。

    最常用的备份方法
    分级 完整备份 差异备份 日志备份
    数据库级 完整数据库备份 差异数据库备份 (一般)日志备份
    文件级 完整文件备份 差异文件备份 (一般)日志备份

    选择备份策略和恢复模式

    SQL Server 数据丢失的最大时间段

    利用数据备份恢复机制保护数据,是不可能保证数据一点都不丢失的,SQL Server 不可能时时刻刻做数据库备份,每次备份之间总要有一定的时间间隔。此时间间隔之间的数据变化在下一次备份之前,是没有保护的。因此,数据丢失的最大时间段就是两次备份之间的时间间隔。

    频繁备份是否合适?

    既然数据丢失的最大时间段为两次备份之间的时间间隔,提高备份频率,降低备份间隔,从而减少数据丢失量。但是,备份越频繁,需要的投入也越多。

    • 备份越多,要管理的备份文件也越多,即数据库恢复时要恢复的文件也越多。要建立一个合适的备份管理制度
    • 备份虽不会阻塞数据库的正常操作,但会占用磁盘IO。若服务器本身IO就比较繁忙,频繁的备份会降低数据库的IO性能。
    • 备份难免会因为种种因素失败,备份越频繁,遇到失败的几率越大。因此 DBA 需要及时处理错误,将备份任务恢复常态。

    日志备份的局限性
    使用日志备份,可将数据库恢复到故障点或特定的时间点。因此日志备份在备份策略中具有很重要的角色。但日志备份只能在完整恢复模式和有些大容量日志恢复模式的数据库上进行。制定备份策略,首先要决定是否需要日志备份,若需要,则数据库恢复模式就要选成完整模式,若不需要做日志备份,则数据库模式就要设置简单,否则会遇到日志文件无线增长问题。

    简单恢复模式下的备份

    简单恢复模式下,不能做日志备份,所以它只支持最简单的备份和还原方式,很容易管理。如果没有日志备份,则只能将数据库恢复到最后一次备份的结尾。若发生灾难,数据库最后一次备份之后所做的数据修改将全部丢失。

    如下图所示,数据库有5个备份,灾难发生在 t6 时间点,因此只有在时间 t5 进行的最新的一份数据库备份需要被还原。还原此备份会将数据库恢复到 t5 这个时间点,t5 时间点之后的数据更新都会丢失。
    在这里插入图片描述

    优点

    • 容易管理
    • 恢复简单

    缺点

    • 无日志备份,只能将数据库恢复到最后一次备份的结尾
    • 数据丢失风险会随时间增长和增加,直到进行下一个完整备份或差异备份为止。

    建议

    限定充足的备份频率,以避免遗失大量数据。同时,频率也不能太高而让备份变得难以管理。

    使用场景

    只适合于可频繁备份的小型数据库

    简单恢复模式下的完整数据库备份+差异数据库备份

    为降低风险,可引入差异备份,使用差异数据库备份补充数据库完整备份,从而降低工作损失风险的一种备份策略。

    如下图所示,在第一次数据库完整备份后,连续建立了三次差异备份。第三次差异备份后,进行第二次数据库完整备份,建立新的差异基准。

    在这里插入图片描述

    差异备份相对完整备份的优点

    • 开销低
    • 可频繁执行

    适用场景

    数据库数据量稍大,能够容忍较长时间数据丢失的。

    简单恢复模式总结

    不管是数据库完整备份和数据库差异备份,都不可能以比较频繁的频率进行,一般都只能在晚间进行。若数据库比较庞大,或者不允许比较长时间的数据丢失,这样的备份策略是不能满足要求的,必须引入日志备份,建立更为复杂,但是也更强大的恢复策略。

    完整恢复模式下的备份

    选取完整恢复模式可以使用日志备份。由于日志备份只复制上次日志备份以来的所有日志记录,所以开销会比数据库备份小很多,可以定义一种很频繁的频率(5分钟甚至更短)来做备份,以达到在最大限度内防止出现故障时丢失数据的目的。

    使用日志备份的优点

    • 允许将数据库还原到日志备份内包含的任何时间点(时点恢复)
    • 假定可以在发生严重故障后备份活动日志,则可将数据库一直还原到没有发生数据丢失的故障点处

    使用日志备份的缺点

    • 日志备份文件数量多
    • 恢复备份时,需要严格按照备份产生的顺序依次恢复。中间不能有任何备份缺失或跳跃。所以日志备份做的越多,还原时间越长,管理复杂性也越高

    下图所示为完整恢复模式下的最简单备份策略,在此图中,已完成了数据库备份 Db_1 及两个例行日志备份 Log_1 和 Log_2。在 Log_2 日志备份后的某个时间,数据库出现故障。在还原这三个备份前,DBA 必须首先备份活动日志(日志尾部),然后还原 Db_1 、Log_1 、Log_2,并且不恢复数据库,接着 DBA 还原并恢复尾(Tail)日志文件。这一步可以把数据库恢复到故障点,从而恢复所有数据。如果尾日志能够成功地备份和恢复,这次灾难可能甚至不会带来任何数据丢失。如果灾难毁坏的时日志文件,使得尾日志不能成功备份和恢复,这次灾难造成的数据丢失就是从 Log_2 以后的所有修改。

    在这里插入图片描述

    数据丢失最大时间段

    在第一个完整数据库备份完成,并且常规日志备份开始之后,潜在的工作丢失风险存在事件仅为数据库损坏时间点,即到上一次常规日志备份的那一段时间。

    建议

    建议经常执行日志备份,以将工作丢失的风险限定在业务要求所允许的范围内。

    缺点

    • 灾难发生后,需要恢复的日志文件数量太多。

      每1小时做一次日志备份。每周在周日做一次数据库完整备份。若灾难在周5发生,则不得不恢复 5*24=120个日志备份。恢复日志文件过多其花费的时间成本较大。

    模拟场景
    为了最大程度地缩短还原时间,可对相同数据进行一系列差异备份做补充。

    完整数据库备份 + 差异数据库备份+日志备份

    下图所示为使用差异数据库备份及一系列例行日志备份来补充完整数据库备份。使用事务日志备份可缩短潜在的工作丢失风险的存在时间,使该风险仅在最新日志备份之后存在。在第一个数据库备份完成后,每天做一个差异数据库备份,而在工作时间进行若干日志备份。
    在这里插入图片描述

    上图中第一个数据库备份创建之前,数据库存在潜在的工作丢失风险(从时间 t0 到时间 t1)。该备份建立之后,例行日志备份将工作丢失的风险降为丢失自最近日志备份之后所做的修改(最近备份的时间为 t14)。如果发生故障,则应立即尝试备份活动日志(尾部日志),若此“尾部日志备份”成功,则数据库可还原到故障点。

    下面以 AdventureWorksDW2018 数据库为例,来了解完整恢复模式下的数据库备份
    AdventureWorksDW 数据库的安装请参考 SQL SERVER 自带数据库下载安装

    实践前准备

    清空表 msdb..backupset 上 2018/09/28 之前的记录,注意时间

    USE msdb;  
    GO  
    EXEC sp_delete_backuphistory @oldest_date = '09/28/2018';  
    

    AdventureWorksDW2018 库的恢复模式修改为完整恢复模式,否则会报 4208 错误

    USE master ;  
    ALTER DATABASE AdventureWorksDW2018 SET RECOVERY FULL ;
    

    显示 AdventureWorksDW2018 这个数据库历史上曾经的备份信息。

    use msdb;
    select distinct s.first_lsn, s.last_lsn,
                    s.database_backup_lsn, s.backup_start_date, s.backup_finish_date,
    				s.type, y.physical_device_name 
      from msdb..backupset s inner join 
           msdb..backupfile f on f.backup_set_id = s.backup_set_id inner join
    	   msdb..backupmediaset m on s.media_set_id = m.media_set_id inner join
    	   msdb..backupmediafamily y on m.media_set_id = y.media_set_id
     where (s.database_name = 'AdventureWorksDW2018')
     order by s.backup_finish_date desc;
    

    备份信息字段含义
    对于日志备份来讲

    字段 含义
    first_lsn 标识备份集中第一个日志记录的日志序列号
    last_lsn 标识备份集之后的下一条日志记录的日志序列号
    (fisrt_lsn, last_lsn-1) 标识此日志备份所包含的所有日志序列
    last_lsn-1 表示前面一条日志序列号,而不表示日志序列号减 1,因为日志序列号虽然是递增的,但并不表示一定以 1 为单位递增
    (fisrt_lsn, last_lsn) 表示做数据恢复时,在做 roll forward(前滚)动作时,一定要遍历的 LSN,不然的话数据库在做恢复的时候,数据会不一致
    database_backup_lsn 标识上一次数据库做全备份的起始 LSN

    TYPE
    标识数据库备份的类型

    类型 含义
    D 数据库
    L 日志
    I 差异数据库
    F 文件或文件组

    1. 对数据库做一个全备份

    BACKUP DATABASE [AdventureWorksDW2018] TO DISK='F:\backup\AdvFull1.bak'
    

    查询数据库的历史备份记录,显式一个全备份
    在这里插入图片描述

    2. 对数据库做一个操作,然后做一个日志备份

    --drop table t1;
    use AdventureWorksDW2018;
    create table t1(number int, name nvarchar(50));
    insert into t1 values(1, 'a');
    go 
    BACKUP LOG [AdventureWorksDW2018] TO DISK='F:\backup\AdvLog2.bak'
    

    再次执行查询,可看到又添加了一条新的记录如下图所示。此备份时日志备份,LSN 是从 5700000002880000157000000039200001

    在这里插入图片描述

    3. 对数据库做一个操作,再做一个日志备份

      use AdventureWorksDW2018;
      insert into t1 values(2, 'b');
      go
      BACKUP LOG [AdventureWorksDW2018] TO DISK='F:\backup\AdvLog3.bak'
    

    再次执行查询,可看到又添加了一条新的记录如下图所示。这个备份日志备份,LSN 是从 5700000003920000157000000040800001,可观察到这个日志备份的 first_lsn 和上一次日志备份的 last_lsn 一定是一样的。这是因为数据库在做日志备份的时候,LSN 要求是连续的。

    在这里插入图片描述

    4.对数据库做一个操作,再做一个差异备份

    use AdventureWorksDW2018;
    insert into t1 values(3, 'c');
    go 
    BACKUP DATABASE [AdventureWorksDW2018] TO DISK='F:\backup\AdvDiff4.bak' WITH DIFFERENTIAL;
    

    再次执行查询,可看到又添加了一条新的记录,这个备份时差异备份,如下图所示
    在这里插入图片描述

    5. 一直这样操作,最后对数据库做一次日志操作,如下图所示

    -- 插入一条数据,再做一个差异备份
    use AdventureWorksDW2018;
    insert into t1 values(4, 'd');
    go 
    BACKUP DATABASE [AdventureWorksDW2018] TO DISK='F:\backup\AdvDiff5.bak' WITH DIFFERENTIAL;
    -- 插入一条数据,再做一个日志备份
    use AdventureWorksDW2018;
    insert into t1 values(6, 'f');
    go
    BACKUP LOG [AdventureWorksDW2018] TO DISK='F:\backup\AdvLog7.bak'
    -- 插入一条数据,再做一个日志备份
    use AdventureWorksDW2018;
    insert into t1 values(8, '8');
    go
    BACKUP LOG [AdventureWorksDW2018] TO DISK='F:\backup\AdvLog8.bak'
    -- 插入一条数据,再做一个差异备份
    use AdventureWorksDW2018;
    insert into t1 values(9, '9');
    go 
    BACKUP DATABASE [AdventureWorksDW2018] TO DISK='F:\backup\AdvDiff9.bak' WITH DIFFERENTIAL;
    -- 插入一条数据,再做一个日志备份
    use AdventureWorksDW2018;
    insert into t1 values(10, '10');
    go
    BACKUP LOG [AdventureWorksDW2018] TO DISK='F:\backup\AdvLog10.bak'
    -- 插入一条数据,再做一个日志备份
    use AdventureWorksDW2018;
    insert into t1 values(11, '11');
    go
    BACKUP LOG [AdventureWorksDW2018] TO DISK='F:\backup\AdvLog11.bak'
    

    在这里插入图片描述

    总结
    first
    不管是全备份还是差异备份,都不会影响 LSN 的序列。因此,即使最近的几个全备份或差异备份受损,只要有一个全备份,以及该全备份后所有的日志备份,我们也是能够完整无缺地把数据恢复出来,只是恢复的时间会稍微长一点。中间的差异备份或其他全备份只是减少了需要恢复的日志备份数目。这进一步说明了日志备份的重要性。
    second
    日志备份的 LSN 是连续的。否则在恢复的时候,会碰到日志链断裂的问题,恢复时不能继续下去的。

    参考资料

    <<SQL Server 2012 实施与管理实战指南>>

    查看或更改数据库的恢复模式 (SQL Server)
    维护计划实现备份:每周数据库完整备份、每天差异备份、每小时日志备份

    SQL Server 2012入门备份与恢复数据库篇:总揽

    windows7 设置文件夹的权限设置

    展开全文
  • sql server 数据库备份,完整备份,差异备份,自动备份说明 Sql server 设置完整备份,差异备份说明 在数据库管理器中,选择要备份的数据库,右键找到“备份” 然后可以按照备份的方式进行备份。 ...

    sql server 数据库备份,完整备份,差异备份,自动备份说明

     

    Sql server 设置完整备份,差异备份说明

     

     

    在数据库管理器中,选择要备份的数据库,右键找到“备份”

     

    然后可以按照备份的方式进行备份。

    关于文件的还原,作以下补充说明:

    步骤为:

    1、在需要还原的数据库上右键选择如图

    image

    2、在“常规”选项中点击“源设备”选取磁盘上备份好的.bak文件后,勾上“还原”选项的勾

    image

    3、在“选项”页面中,勾选上“覆盖现有数据库”,恢复状态,选择第一个“回滚未提交的事务。。。。”,其中在“行数据”和“日志”两个数据行中,务必查看“还原为”的路径是否指向了你需要还原的数据库名字 dbname.mdf和dbname_log.ldf,因为有些被还原的数据库名字和.bak备份文件中的名字不一样,导致还原失败。

    image

    4、点击确定后还原成功

     

    当数据库文件很大,数据量很大,备份和还原需要花费不少时间的时候,数据库的差异备份自然就成为考虑的备份方案之一。

    SQLSERVER2008的差异备份存在两种备份方式:

    1. 先做一个完整备份,然后再做差异备份,差异备份的文件还是使用完整备份的那个文件,这样在完整备份集中就会存在两个

       备份文件。还原的时候,都选中这个差异文件,还原选项选择“覆盖现有数据库”和“回滚未提交的事务......”这两项即可

    2. 先做一个完整备份,然后再做一个差异备份,差异备份的文件不使用完整备份的那个文件,自己再新建一个差异备份文件。

      这样磁盘上针对这两次备份就会存在两个备份文件。还原这两个备份文件时,先选择完整备份的文件,还原选项里选择

    “覆盖现有数据库”和“不对数据库执行任何操作....” 完成还原后,会发现被还原的数据库名呈现“DBName(正在还原...)”

      针对这个数据库再进行一次还原,选择差异备份文件后,直接点确定即可。

     

    步骤截图:

    1、首先如下图对数据库做一个完全备份后再做差异备份

    image

     

    2、进行差异还原的时候首选选择上图中_完全.bak文件进行还原,此时DB会显示 dbname(正在还原…)

    image

    image

    image

     

    3、在上图(正在还原…)的DB名字上,右键-》任务-》还原-》数据库,选择如上图的“源设备”选项,选择_差异2.bak,勾上还原

    在“选项”页面做如下选择

    image

     

    点击确定后,差异还原成功执行。

    注意:我们是直接选择的_差异2.bak进行的还原,这样的话也会将_差异1.bak中的数据还原到数据库中,因为_差异2.bak是从_差异1.bak上进行差异备份的。

    关于自动备份,作如下详述:

    SQL Server 2008数据库可以实现数据库的定期自动备份。方法是用SQL SERVER 2008自带的维护计划创建一个计划对数据库进行备份,如果出现以下错误:

    “代理XP”组件已作为此服务器安全配置的一部分被关闭。系统管理员可以使用sp_configure来启用“代理XP”。有关启用“代理XP”的详细信息,请参阅SQL Server联机丛书中的“外围应用配置器”。(ObjectExplorer)

    可以打开SQL Server Configuration Manager(SQL Server配置管理器),启用SQL Server Agent(SQL Server 代理)。
     

    (1)启动【sql server Management Studio】,在【对象资源管理器】窗口里选择【管理】——【维护计划】选项。

     

    2)右击【维护计划】,在弹出的快捷菜单里选择【维护计划向导】选项

    ,弹出如图所示的【维护计划向导】对话框,单击【下一步】按钮

    3)弹出如图所示【选择目标服务器】对话框,在【名称】文本框里可以输入维护计划的名称;在【说明】文本框里可以输入维护计划的说明文字;【在服务器】文本框里可以输入要使用的服务器名;最后选择正确的身份证信息,单击【下一步】按钮。

    (4)弹出如图所示【选择维护任务】对话框,在该对话框

    里可以选择多种维护任务:检查数据库完整性、收缩数据库、重新生成或组织索引、更新统计信息、清除历史记录、执行sql

    Server代理作业、备份数据库等。在本例中选择【备份数据库(完整)】复选框,其他维护任务的设置都大同小异。

    (5)单击【下一步】按钮,弹出如图所示【选择维护任务顺序】对话框,如果有多个维护任务,在此可以通过【上移】和【下移】两个按钮来设置维护任务的顺序,设置完毕后单击【下一步】按钮。

    (6)弹出如图所示【定义任务】对话框,在【数据库】下

    拉列表框里可以选择要备份的数据库名;在【备份组件】区域里可以选择备份数据库还是备份数据库文件;在【目标】区域可以添加备份文件和备份设备、设置是否将备份数据追加到备份文件里等。设置完毕后单击【下一步】按钮。

    (7)弹出如图所示【选择计划属性】对话框,单击【更改】按钮。

    8)弹出如图所示【新建作业计划】对话框,在该对话框里可以设置备份数据库的时间及频率,设置完毕后单击【确定】按钮回到如下所示对话框,再单击【下一步】按钮。

    (9)弹出如图18.24所示【选择报告选项】对话框,在该对话框里可以选择如果管理维护计划报告:可以将其写入文件中,也可以通过电子邮件发送数据库管理员。设置完毕后单击【下一步】按钮。

    10)弹出如图所示【完成向导】对话框,单击【完成】按钮完成维护计划创建操作。

    不到特殊情况不要还原,数据无价,请谨慎处理。

     

    维护计划最价实践:http://www.cnblogs.com/Leo_wl/p/3288518.html

    备份计划

    1) 每周星期日的2:00:00执行数据库的完整备份;

    2) 每周星期一至星期六每天的2:00:00执行数据库的差异备份;

    3) 每天在8:00:00和23:59:59之间、每1小时执行数据库的日志备份;

    4) 每个月的最后一个星期日的1:00:00执行数据库的完整备份;

    计划讲解

    1. 根据备份文件的不同,我创建了4个文件用于存放备份文件:(Medusa是数据库名)

    1) Medusa_Full:用于存放完整备份文件;

    2) Medusa_Diff:用于存放差异备份文件;

    3) Medusa_Log:用于存放日志备份文件;

    4) Medusa_Save:用于存放保留备份文件

    上面的4个文件夹与备份计划的4个步骤是一 一对应的;

    此随笔或为自己所写、或为转载于网络。仅用于个人收集及备忘。

    转载于:https://www.cnblogs.com/Jian-Zhang/p/7243542.html

    展开全文
  • 文章目录还原方案数据库级(数据库完整还原)不同恢复模式所支持的各种还原方案数据库完整还原完整数据库备份+差异备份+事务日志备份 示例参考资料 还原方案 数据库级(数据库完整还原) 还原和恢复整个数据库。...

    还原方案

    数据库级(数据库完整还原)

    还原和恢复整个数据库。数据库在还原和恢复操作期间会处于离线状态。SQL SERVER不允许用户备份或还原单个表。还原方案是指从一个或多个备份中还原数据、继而恢复数据库的过程。

    不同恢复模式所支持的各种还原方案

    简单恢复模式下

    这是基本的还原策略,数据库完整还原可能涉及完整数据库备份的简单还原和恢复。另外,完整的数据库还原还可能涉及还原完整数据库备份,以及还原和恢复差异备份

    完整/大容量日志恢复模式下

    这是基本的还原策略,数据库完整还原涉及还原完整数据库备份或差异备份,以及所有后续日志备份(按顺序)。通过恢复并还原上一次日志备份,完成数据库完整还原。

    在恢复数据库前,SQL Server 数据库引擎都会保证整个数据库在逻辑上的一致性。例如,还原一个文件以后,必须恢复完整的一套日志文件备份,以便将该文件里的事务前滚足够长度,与数据库保持一致,才能恢复该文件并使其在线。

    数据库完整还原

    在简单情况下,还原操作只需要一个完整数据库备份,一个差异数据库备份和后续日志备份。

    数据库还原到故障点操作步骤

    1. 首先备份活动事务日志(日志的”尾部“)
    2. 按备份的创建顺序还原最新的完整数据库备份,最新的差异备份(如果有)及所有后续日志备份

    若源数据库是简单模式,则没有相应的日志备份。恢复工作仅限于还原一个完整数据库备份,以及最后的一个差异备份。

    数据库发生灾难后,如何将之恢复到一个特定的恢复点

    • 场景

    一个关键数据表被人在中午 12 点 01 份误删,如何将其恢复到 12 点的那个状态呢?

    • 解决方案
      通过恢复日志文件到指定恢复点的方式来实现。有以下几个先决要求,而且是要在灾难发生之前,数据库就必须满足以下所有条件:
    1. 数据库的恢复模式必须是完整恢复模式
    2. 灾难发生前,数据库曾做过一个完整数据库备份
    3. 在上次完整数据库备份后,若做过任何日志备份,这些日志备份现在每个都能找到。

    符合以上三个要求的数据库就可以使用备份恢复方法将数据库恢复到完整备份后的任意一个时间点。

    将数据库恢复到故障点的基本步骤如下:

    1. 备份活动事务日志(也称为日志尾部)。此操作将创建尾日志备份。如果活动事务日志在灾难发生后变得不可用,则该日志部分的所有事务都将丢失。
    2. 还原最新完整数据库备份,而且不做事务恢复
    3. 如果存在差异备份,则还原最新的差异备份,而不做事务恢复
    4. 从还原备份后创建的第一个事务日志备份开始,使用 NORECOVER 依次还原日志
    5. 恢复数据库到某个时间点(RESTORE DATABASE database_name with stopat='???', RECOVERY)
    完整数据库备份+差异备份+事务日志备份 示例

    示例前准备
    清空表 msdb..backupset 上 2018/09/28 之前的记录,注意时间

    USE msdb;  
    GO  
    EXEC sp_delete_backuphistory @oldest_date = '09/28/2018';  
    

    AdventureWorksDW2018 库的恢复模式修改为完整恢复模式,否则会报 4208 错误

    USE master ;  
    ALTER DATABASE AdventureWorksDW2018 SET RECOVERY FULL ;
    
    -- 显示 AdventureWorksDW2018 这个数据库历史上曾经的备份信息。
    use msdb;
    select distinct s.first_lsn, s.last_lsn,
                    s.database_backup_lsn, s.backup_start_date, s.backup_finish_date,
    				s.type, y.physical_device_name 
      from msdb..backupset s inner join 
           msdb..backupfile f on f.backup_set_id = s.backup_set_id inner join
    	   msdb..backupmediaset m on s.media_set_id = m.media_set_id inner join
    	   msdb..backupmediafamily y on m.media_set_id = y.media_set_id
     where (s.database_name = 'AdventureWorksDW2018')
     order by s.backup_finish_date desc;
    

    示例操作内容

    将创建 AdventureWorksDW2018 数据库的尾日志备份,将还原较早的完整数据库备份和日志备份,最后还原尾日志备份。事务恢复动作将在最后的尾日志恢复步骤中完成,在此之前数据库不能被访问。

    1. 对数据库做一个全备份
      BACKUP DATABASE [AdventureWorksDW2018] TO DISK='F:\backup\AdvFull1.bak'
      
    2. 对数据库做一个操作,然后做一个日志备份
        --drop table t2;
        use AdventureWorksDW2018;
        create table t2(number int, name nvarchar(50));
        insert into t2 values(1, 'a');
        go 
        BACKUP LOG [AdventureWorksDW2018] TO DISK='F:\backup\AdvLog2.bak'
      
    3. 对数据库做一个操作
        use AdventureWorksDW2018;
        insert into t2 values(2, 'b');
        go
      
    4. 此时灾难发生,试图创建一个尾日志备份
      use master
      backup log [AdventureWorksDW2018] to disk = 'F:\backup\AdvLogTail.bak' with norecovery;
      go
      
    5. 删除 AdventureWorksDW2018 数据库
      drop database [AdventureWorksDW2018];
      
    6. 从备份恢复一个全备份
      restore database [AdventureWorksDW2018] from disk = 'F:\backup\AdvFull1.bak' with norecovery;
      
    7. 从备份中恢复一个正常的日志备份
      restore log [AdventureWorksDW2018] from DISK='F:\backup\AdvLog2.bak' with norecovery;
      
    8. 用 STOPAT 恢复尾日志文件
      restore log [AdventureWorksDW2018] from DISK='F:\backup\AdvLogTail.bak' with stopat = '2018-09-27 16:23:00.000', recovery;
      go
      
    9. 验证数据完整性
      use AdventureWorksDW2018
      select * from t2;
      

    方案缺点
    要做一次数据库的完整备份恢复,这在时间上和空间上都是代价高昂的

    • 时间上
      SQL Server 需要很长的时间来重建整个数据库。在此过程中,数据库是不能访问的。重建时间的长短基本由硬盘的速度决定。一个上TB的数据库做一个完整恢复可能需要近一天的时间,这个等待时间很多系统不能接受。

    • 空间上
      一个完整备份的大小和数据库已使用空间大小基本一致。若备份要放在硬盘上,需要硬盘能提供2倍的存储空间,一份放数据库,一份放备份。

    参考资料

    <<SQL Server 2012 实施与管理实战指南>>

    展开全文
  • 为了节省时间和磁盘空间,可以在一次完整数据库备份后安排多次差异备份。每次连续的差异数据库备份都大于前一次备份,这就需要更长的备份时间、还原时间和更大的空间。因此,建议您定期执行新的完整备份以提供新的...

    对于大型数据库,完整数据库备份需要大量磁盘空间。为了节省时间和磁盘空间,可以在一次完整数据库备份后安排多次差异备份。每次连续的差异数据库备份都大于前一次备份,这就需要更长的备份时间、还原时间和更大的空间。因此,建议您定期执行新的完整备份以提供新的差异基准。

    当您使用差异数据库备份时,我们建议您最好遵循以下原则:

    1. 在每次完整数据库备份后,定期安排差异数据库备份。例如,可以每四小时执行一次差异数据库备份,对于活动性较高的系统,此频率可以更高。

    2. 在确保差异备份不会太大的情况下,定期安排新的完整数据库备份。例如,可以每周备份一次完整数据库。

    注意:
    在完整恢复模式下,还必须安排事务日志备份。建议日志备份的频率高于差异数据库备份。有关详细信息,请参阅使用事务日志备份。

    部分备份差异备份

    本节仅与包含多个文件组的数据库相关;在简单模式下,仅与只读文件组相关。

    在大多数情况下,部分差异备份都能按预期与部分备份一起使用。但是,如果在执行部分备份和执行部分差异备份之间更改了对文件组的只读或读/写权限,就会引起问题。当尝试执行部分差异备份时,可能会遇到错误,具体取决于文件是否包括在部分差异备份中。有关文件组是否自动包括在部分差异备份中的信息,请参阅差异部分备份。

    最佳方法:   将文件组更改为读/写文件组后,在进行下一次备份时,应执行部分备份,而不是部分差异备份。唯一的例外情况是:您打算在下一次备份之前将文件组更改回只读文件组。

    最佳方法:   将文件组更改为只读访问后,请对文件组执行完整文件备份,以使后续的部分差异备份自动跳过该文件组。

    文件差异备份

    对于以下情况,可以考虑使用差异文件备份:

    • 文件组中有些文件的备份频率低于其他文件的备份频率。

    • 文件很大而且数据不常更新;或者反复更新相同数据。

    有关如何使用差异备份的详细信息(包括最佳方法),请参阅使用差异备份。



        本文转自 Fanr_Zh 博客园博客,原文链接:http://www.cnblogs.com/Amaranthus/archive/2011/06/27/2091176.html,如需转载请自行联系原作者




    展开全文
  • 首先对数据库进行完整备份,然后在对数据库进行下一次完整备份前,可以对数据库进行差异备份。 如果数据库发生了故障,首先进行完整备份还原,然后按差异备份的时间顺序进行差异备份还原。 参考资料:sqlserver...
  • 原文:SQLServer数据库差异备份差异备份 (differential backup)定义 一种数据备份,基于完整数据库或部分数据库或一组数据文件或文件组(差异基准)的最新完整备份,并且仅包含自确定差异基准以来发生更改的数据。...
  • 差异数据库备份”只记录自上次完整数据库备份后更改的数据。此完整备份称为“差异基准”。差异数据库备份比完整数据库备份更小、更快。这会缩短备份时间,但将增加复杂程度。对于大型数据库,差异备份的间隔可以比...
  • 数据库的备份数据库备份分为完整备份和差异备份,首先理解下什么是完整备份和差异备份:完整备份是指对数据库的全部数据进行备份。差异备份是指将数据库上一次完整备份以后到现在为止的修改的数据进行备份,因此差异...
  • Sql server 设置完整备份差异备份说明 在数据库管理器中,选择要备份数据库,右键找到“备份” 然后可以按照备份的方式进行备份。 关于文件的还原,作以下补充说明: 步骤为: 1、在需要还原的...
  • 数据库备份

    2019-09-28 02:35:14
    数据库备份实例/** **数据库备份实例 **朱二 2004年5月 **备份策略: **数据库名:test **备份文件的路径e:\backup **每个星期天凌晨1点做一次完全备份,为保险起见,备份到两个同样的完全备份文件test_full_A.bak和...
  • 通常备份可以按照备份数据库状态分为热备和冷备,按照备份数据库文件的大小分为增量备份差异备份和全量备份。其中热备可以通过mysql replication主从复制进行实时备份,percona的xtrabackup以及mysql自带的...
  • 数据库差异备份

    2009-12-13 12:41:00
    数据库差异备份是针对上一次完全备份来说的,就是说在上一次整体备份的基础将改动的部分进行备份。估计是在数据库日志当中有记录上一次完全备份的样子。 在备份对话框中类型选项选择“差异”。可以追加到之前的备份...
  • 推荐教程:SQL教程SQL SERVER数据备份方案SQL SERVER数据库备份方法主要有完整备份差异备份,事务日志备份等。根据数据安全性的要求,推荐的备份方式为每周一次完整备份,每天一次差异备份,每半个小时一次事务...
  • 备份的分类完全备份顾名思义,备份整个数据库所有内容。增量备份备份当前到最近一次完全备份或增量备份之间的数据。备份较快,但还原相对复杂,需要最近一次的完全备份和所有之后的增量备份,并且按备份顺序依次...
  • 数据库备份 语句

    2016-11-16 15:46:00
    认识数据库备份和事务日志备份 数据库备份与日志备份是数据库维护的日常工作,备份的目的是在于当数据库出现故障或者遭到破坏时可以根据...可以在常规选项页面你可以选择备份类型是进行完整数据库备份还是差异数...
  • 数据库备份数据库备份方案:全量备份全量备份就是指对某一个时间点上的所有数据或应用进行的一个完全拷贝,数据恢复快,备份时间长增量备份增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前...
  • 4、文件备份:提供复制备份、压缩备份和压缩子目录三种备份模式,支持文件过滤、差异备份、文件还原等高级功能,无视畸形文件。 5、SQL Server备份:可识别不同的SQL Server实例,备份指定的数据库或所有数据库;...
  • 什么是数据库差异备份

    千次阅读 2014-03-31 12:51:28
    例如:我首先执行了一个完整备份把某个数据库备份了一下,然后我在这个数据库里面添加了一个表。然后我又进行差异备份,那么差异备份只备份这个数据库完整备份以后更改的数据,也就是只备份那个表。差异备份的优势是...
  • 材料:完整备份数据库一份、最近备份差异备份一份 现在需要将它完整的恢复到另外一台数据库服务器上。 首先 左侧数据库-右键-还原数据库 然后目标数据库手动输入一个名字。 下面源设备选择完整数据库文件,...
  • 1.差异备份  是完整备份的补充  备份自上次完整备份以来的数据变动的部分 2.备份过程:  在做差异备份之前需要先进行完整备份。完整备份的过程见:https://i.cnblogs.com/EditPosts.aspx?postid=10322955  ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,646
精华内容 658
关键字:

数据库备份差异