Backup--完整备份会打破现有的日志备份链么?

 

--问题描述:

--对数据库有一个周期性数据库备份和事务日志备份的维护计划,在维护计划外有工作人员对数据库进行完整备份,该备份会打乱现有的日志备份链么?

--==========================================================

--创建数据库

CREATE DATABASE BackupTestDB 

GO 

USE BackupTestDB  

GO 

--创建测试表

CREATE TABLE TB1 

    ID INT IDENTITY( 1,1 ) PRIMARY KEY,  

    ActionDesc NVARCHAR (200),  

    ActionTime DATETIME DEFAULT GETDATE() 

--第一次完整备份

BACKUP DATABASE BackupTestDB TO DISK='G:\DBBackup\F1.BAK'

GO 

--第一次完整备份后记录

INSERT INTO TB1( ActionDesc) SELECT N' 第一次完整备份后 '

GO 

--第一次日志备份

BACKUP LOG BackupTestDB TO DISK ='G:\DBBackup\L1.BAK'

--第一次日志备份后记录

INSERT INTO TB1( ActionDesc) SELECT N' 第一次日志备份后 '

GO 

--第二次完整备份

BACKUP DATABASE BackupTestDB TO DISK='G:\DBBackup\F2.BAK'

GO 

--第二次完整备份后记录

INSERT INTO TB1( ActionDesc) SELECT N' 第二次完整备份后 '

GO 

--第二次日志备份

BACKUP LOG BackupTestDB TO DISK ='G:\DBBackup\L2.BAK'

--第二次日志备份后记录

INSERT INTO TB1( ActionDesc) SELECT N' 第二次日志备份后 '

GO

--==========================================================

--还原方式

USE master 

GO

--使用第一次完整备份恢复

RESTORE DATABASE BackupTestDB FROM DISK='G:\DBBackup\F1.BAK'

WITH NORECOVERY ,REPLACE

GO

--使用第一次日志备份恢复

RESTORE DATABASE BackupTestDB FROM DISK='G:\DBBackup\L1.BAK'

WITH NORECOVERY ,REPLACE

GO

--使用第二次日志备份恢复

RESTORE DATABASE BackupTestDB FROM DISK='G:\DBBackup\L2.BAK'

WITH RECOVERY ,REPLACE

GO

USE BackupTestDB 

GO

SELECT * FROM TB1

 

还原方式

USE master 

GO

--使用第二次完整备份恢复

RESTORE DATABASE BackupTestDB

FROM DISK ='G:\DBBackup\F2.BAK'

WITH NORECOVERY ,REPLACE

GO

--使用第二次日志备份恢复

RESTORE DATABASE BackupTestDB

FROM DISK ='G:\DBBackup\L2.BAK'

WITH RECOVERY ,REPLACE

GO

USE BackupTestDB 

GO

SELECT * FROM TB1

 

--案例:

--有数据库DB1 ,该数据库由于长时间未做日志备份,导致数据文件为 GB,而日志文件有GB,为截断日志,工作人员对数据库进行完整备份 +日志备份,结果发现日志备份耗费大量时间,且生成的日志备份文件较大。

--解释:在数据库完成第一次完整备份后,第一次日志备份会以第一次完整备份为起始点开始备份日志,而后续的日志备份会以最近一次日志备份结束点为起始点开始备份,而不考虑最近一次完整备份。

 

--如果确认当前数据无问题同是想快速收缩日志文件,可以修改数据库恢复模式为简单模式,然后收缩日志文件,再进行完整备份 +事务日志备份

 

 

--建议:

--在DBA 维护过程中,会在维护计划外对数据库进行备份,备份应考虑当前维护计划,应该将备份文件存放到维护计划使用的目录下,尤其是对日志进行备份,如果不希望截断日志,可以使用 COPY_ONLY

posted on   笑东风  阅读(505)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现

导航

点击右上角即可分享
微信分享提示