Database differential backup差异备份和还原
完整备份: 备份全部选中的文件和文件夹,并不依赖文件的存档属性来确定备份哪些文件。(在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份,换言之,清除存档属性),完全备份也叫完整备份。
差异备份: 差异备份是针对完整备份:备份上一次完整备份后发生变化的所有文件。(差异备份过程中,只备份有标记的那些选中的文件和文件夹。它不清除标记,即:备份后不标记为已备份文件,换言之,不清除存档属性,直到下一次完整备份为止)。
完整+差异备份的优缺点比较:
优点:
1. 占用的空间较小,在一个周期内,只需要保存一份完整备份,其它都是差异备份;
2. 在恢复数据时,只需要恢复一份完整备份 + 最新一次的差异备份;
3. 虽然备份数据需要较多的时间,但还原数据使用较少的时间。
缺点:
- 若完整备份的资料丢了,则所有的备份就全完蛋了!所以要特别注意对完整备份文件的保存;
本文中环境为SQL2012.
例子
1. 备份
1.1 创建数据库TestBackup
1.2 创建表TestTable
CREATE TABLE [dbo].[TestTable]( [id] [int] NULL, [name] [nvarchar](10) NULL ) ON [PRIMARY]
1.3 插入数据
insert into [TestTable] values (1,'full').
我们把此时的点叫做 时间点1
1.4 备份数据库,选择全备份
BACKUP DATABASE [TestBackup] TO DISK = N'D:\database backup\TestBackupDB-full.bak' WITH NOFORMAT, NOINIT, NAME = N'TestBackup-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO
或者如下图
1.5 插入数据
insert into [TestTable] values (2,'diff1')
我们把此时的点叫做 时间点2
1.6 做第一个差异备份
BACKUP DATABASE [TestBackup] TO DISK = N'D:\database backup\TestBackupDB-diff1.bak' WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N'TestBackup-Differential Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO
或者如下图
1.7 插入数据
insert into [TestTable] values (3,'diff2')
我们把此时的点叫做 时间点3
1.8 做第二个差异备份
BACKUP DATABASE [TestBackup] TO DISK = N'D:\database backup\TestBackupDB-diff2.bak' WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N'TestBackup-Differential Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO
2 还原(没有分区)
2.1 还原到时间点1
就是将全备份直接还原,这里不多叙述.
2.2 还原到时间点2
2.2.1做全备份的还原
RESTORE DATABASE [TestBackup-Re] FROM DISK = N'D:\database backup\TestBackupDB-full.bak' WITH FILE = 1, MOVE N'TestBackup'
TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\TestBackup-Re.mdf',
MOVE N'TestBackup_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\TestBackup-Re_log.ldf', NORECOVERY, NOUNLOAD, STATS = 5
注意,必须加选项NORECOVERY.
或如下图
在这里,我们把数据还原成了另外一个数据库,名字叫TestBackup-Re.加了NORECOVERY的数据库还原后是不能直接使用的.如下图(显示正在还原)
2.2.2差异还原
选择TestBackupDB-diff1.bak文件,还原到TestBackup-Re,
RESTORE DATABASE [TestBackup-Re] FROM DISK = N'D:\database backup\TestBackupDB-diff1.bak' WITH FILE = 1, MOVE N'TestBackup' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\TestBackup-Re.mdf', MOVE N'TestBackup_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\TestBackup-Re_log.ldf', RECOVERY, NOUNLOAD, STATS = 5
注意mdf和log文件的命名需要手动更改和TestBackup-Re一致.
还原后,查看[TestTable]表,表中数据为时间点2的数据.
2.3 还原到时间点3
2.3.1做全备份的还原(同2.2.1)
把数据库名字改为TestBackup-Re2
RESTORE DATABASE [TestBackup-Re2] FROM DISK = N'D:\database backup\TestBackupDB-full.bak' WITH FILE = 1, MOVE N'TestBackup' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\TestBackup-Re2.mdf', MOVE N'TestBackup_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\TestBackup-Re2_log.ldf', NORECOVERY, NOUNLOAD, STATS = 5
下图
2.3.2差异还原
选择TestBackupDB-diff2.bak文件,还原到TestBackup-Re2,注意mdf和log文件的命名需要手动更改和TestBackup-Re2一致.
RESTORE DATABASE [TestBackup-Re2] FROM DISK = N'D:\database backup\TestBackupDB-diff2.bak' WITH FILE = 1, MOVE N'TestBackup' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\TestBackup-Re2.mdf', MOVE N'TestBackup_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\TestBackup-Re2_log.ldf', RECOVERY, NOUNLOAD, STATS = 5
还原后,查看[TestTable]表,表中数据为时间点3的数据.
3 还原(有分区)
来,在实践中,有一个数据有分区,按照2中所属分步操作失败了.
ITMP2每天都备份,每天删除一个老的分区,每天创建一个新的分区.按照上面的步骤,先做全备份的还原,在做差异备份的还原.报错如下:
Unable to create restore plan due to break in the LSN chain.--(版本为sql2012)
后来试了几次,通过如下方法解决:
在选择Source中Device的时候,选择多个文件:选择全备份和最近一个差异备份,如下图
选项Options选择默认的restore with recovery.
备份成功后,和最后一个差异备份的分区文件和数据完全相同(即删除的分区文件新建的分区文件相同,其他数据也相同)
4 测试完毕并测试成功
Database differential backup差异备份和还原的更多相关文章
- [SQL SERVER 2005]数据库差异备份及还原
因为之前遇到还原差异备份,最开始遇到SQLServer报错:”无法还原日志备份或差异备份,因为没有文件可用于前滚“.查阅很多资料后,终于得到解决.收集整理成这篇随笔. 问题原因:出现这种错误绝大多数是 ...
- sqlServer数据库备份与还原——差异备份与还原
1.差异备份 是完整备份的补充 备份自上次完整备份以来的数据变动的部分 2.备份过程: 在做差异备份之前需要先进行完整备份.完整备份的过程见:https://i.cnblogs.com/EditPos ...
- Backup &recovery备份和还原
实践版本:MySQL5.7 备份类型(backup type)物理和逻辑备份(Physical Versus Logical Backup) 物理备份是指直接复制存储数据库内容的目录和文 ...
- Linux使用 tar命令-g参数进行增量+差异备份、还原文件
原文链接:http://www.cnblogs.com/gnuhpc/ 完整备份: 建立测试路径与档案 mkdir test touch test/{a,b,c} 在test下生成三个文件 执行完整备 ...
- Backup&recovery备份和还原 mysql
1.mysqldump 在日常工作中,我们会使用mysqldump命令创建sql格式的转储文件来备份数据库.或者我们把数据导出后做数据迁移,主备搭建等操作.mysqldump是一个逻辑备份工具,复制原 ...
- sqlserver 2005 数据库的差异备份与还原
找到一个可靠的步骤,点开链接:http://blog.csdn.net/kevindr/article/details/22154323
- SQL Server差异备份的备份/还原原理
SQL Server差异备份的备份/还原原理 记住一点:差异备份是基于最后一次完整备份的差异,而不是基于最后一次差异的差异 备份过程: 1-完整备份之后有无对数据库做过修改,如果有,记录数据库的最 ...
- SQL SERVER完整、差异和事务日志备份及还原(脚本和GUI实现) [原创]
一.完整备份.差异备份和事务日志备份的脚本 --完整备份数据库 BACKUP DATABASE Test_Bak TO DISK = 'E:\20150609_75\bak\Test_bak_full ...
- SQL SERVER 2005还原差异备份、日志备份 2012-03-29 11:43
其实要备份,还原最安全最有保障的是完全备份.但是完全备份肯定是需要更多的磁盘空间的开销.尤其是数据量比较大的.比如基数是500M,每天的增长量为10M,那么第一次完全备份是500M,第二次是510M, ...
随机推荐
- 使用 Newtonsoft.Json 操作 JSON 字符串
一.把实体类转化为 JSON 字符串 1. 为实体类赋值 SenderFromMQSearch senderFromMQSearch = new SenderFromMQSearch(); sende ...
- win10 uwp 右击浮出窗在点击位置
本文主要让MenuFlyout出现在我们右击位置. 我们一般使用的MenuFlyout写在前台,写在Button里面,但是可能我们的MenuFlyout显示的位置和我们想要的不一样. 通过使用后台写S ...
- ASP动态网站建设之连接数据库相关操作
连接数据库: string str = @"server=服务器名称;Integrated Security=SSPI;database=数据库名称;"; 注意封装公共类,将常用重 ...
- jquery的2.0.3版本源码系列(7):3043行-3183行,deferred延迟对象,对异步的统一管理
目录 part1 deferred延迟对象 part2 when辅助方法 网盘源代码 链接: https://pan.baidu.com/s/1skAj8Jj 密码: izta part1 defe ...
- 微信小程序之给项目设置id后提示不在合法域名列别中
hotapp 有免费的https proxy ,可以免费代理请求任何http或者https服务,只要设置好合法域名为https://wxapi.hotapp.cn, 就可以请求网址如请求小程序联盟的例 ...
- HDU 5791 Two(训练题002 F)
Description Alice gets two sequences A and B. A easy problem comes. How many pair of sequence A' and ...
- NFS存储服务部署
第1章 NFS介绍 1.1 NFS服务内容的概述 □ RPC服务知识概念介绍说明,以及RPC服务存在价值(必须理解掌握) □ NFS服务工作原理讲解(必须理解掌握) □ NFS共享文件系统使用原理讲解 ...
- 第十一章 多GPU系统的CUDA C
本章介绍了 显存和零拷贝内存的拷贝与计算对比 #include <stdio.h> #include "cuda_runtime.h" #include "d ...
- css英文字符或者数字不换行的问题
table-layout:fixed; word-break: break-all; overflow:hidden;
- DOM遍历 - 后代
jQuery children() 方法 children() 方法返回被选元素的所有直接子元素. 该方法只会向下一级对 DOM 树进行遍历. 您也可以使用可选参数来过滤对子元素的搜索. 下面的例子返 ...