一般我们的理解是logbackup chain被打破后一定需要一个完整备份然后才能开始新的日志备份,其实不一定需要完整备份,差异备份也是可以的。
首先我们先做个测试:创建数据库做完整备份和日志备份,然后将恢复模式变成简单恢复模式。
CREATEDATABASE LogChainTest;
GO
ALTER DATABASE LogChainTest SET RECOVERY FULL;
GO
BACKUP DATABASE LogChainTest TO DISK = 'D:\MSSQL\LogChainTest.bck' WITH INIT;
GO
BACKUP LOG LogChainTest TO DISK = 'D:\MSSQL\LogChainTest_log1.bck' WITH INIT;
GO
ALTER DATABASE LogChainTest SET RECOVERY SIMPLE;
GO
ALTER DATABASE LogChainTest SET RECOVERY FULL;
GO
然后再开始一个新的Log备份就会出现下面的错误:
BACKUP LOGLogChainTest TO DISK = 'D:\MSSQL\LogChainTest_log2.bck' WITH INIT;
GO
Msg 4214,Level 16, State 1, Line 1
BACKUP LOG cannot be performed because there is no current database backup.
Msg 3013, Level 16, State 1, Line 1
BACKUP LOG is terminating abnormally.
我们都知道,数据库日志备份包含的是从上次日志备份以来发生的交易。当我们将数据库模式更改为简单以后,SQL Server就会认为这次的日志备份不会包含所有的日志交易,所以日志备份无法完成。
现在我们做一个差异备份然后再开始做日志备份就会成功了:
BACKUPDATABASE LogChainTest TO DISK = 'D:\MSSQL\LogChainTest_Diff1.bck' WITH INIT,DIFFERENTIAL;
GO
BACKUP LOG LogChainTest TO DISK = 'D:\MSSQL\LogChainTest_log2.bck' WITH INIT;
GO
做完日志备份之后我做了恢复测试完全没有问题。
这个功能针对大数据库是非常有用的,如果Logbackup chain被打破后,就可以直接选择差异备份,而不需要执行一次完整备份,这样可以节省很多时间和资源。
原文来自与SQLSkills.
分享到:
相关推荐
- **备份初始化参数文件**:使用 `create pfile` 命令创建一个初始化参数文件。 ```sql SQL> create pfile='C:\oracle\orabak\pfilercat.ora' from spfile; ``` - **重启 Oracle 实例**:使用 `shutdown ...
在开始介绍如何使用 BackupExec 12.5 进行 Oracle 数据库备份之前,我们需要了解测试的背景以及进行备份前的准备工作。 **测试背景**: - **BackupExec**:Symantec 公司出品的一款适用于 Windows 平台的优秀备份...
如果遇到找不到文件的错误,可使用`recover database until cancel using backup controlfile`命令,允许在找到最后一个online redo log时中断恢复过程。 整个恢复过程中,重要的是确保所有必要的归档日志都已备份...
完全备份是最基础也是最直接的一种备份方式,它会复制整个版本库到另一个位置。这种方式的优点在于恢复速度快,一旦发生问题,可以直接用备份数据进行恢复而无需额外处理;缺点则是占用存储空间较大,尤其是在频繁...
Log4j是一个广泛使用的开源日志记录框架,提供灵活的日志配置和强大的日志输出功能。本话题将深入探讨如何使用Log4j中的DailyRollingFileAppender配置来自动删除前N天的日志,以便保持日志文件的大小和数量在可控...
删除不必要的快照,只保留一个用于备份的快照。 6. **磁盘故障或损坏**:如果虚拟机的磁盘出现故障或损坏,快照合并可能失败。检查虚拟机的磁盘状态,并修复任何问题。 7. **Veeam服务状态**:确认Veeam服务(如...
2. 用户备份:用户备份涉及到一个特定数据库用户的全部对象,包括表、视图、存储过程等。这种备份模式适合于用户级别的数据恢复。同样使用`EXPDP`,但这次需要指定用户的所有对象: ``` expdp username/password ...
在进行差异备份之前,通常需要有一个完整的数据库备份作为基准,这样才能确保可以从备份中完全恢复数据库。 #### 差异备份的创建 在创建差异备份之前,首先需要有一个完整的数据库备份。以下是一些基本步骤: 1. ...
* 需要创建一个目录用于存放安装文件。 * 需要将安装文件复制到Linux服务器上。 * 需要留意安装过程中的提示,例如输入介质服务器的IP地址。 BACKUP EXEC的优势 BACKUP EXEC是一款功能强大的备份和恢复软件,具有...
[转载]LOG备份与备份差异的对比!.mht[转载]LOG备份与备份差异的对比!.mht
全量备份是指备份整个数据库的所有数据和日志文件,通常用于创建一个基准点,后续的差异备份和日志备份都会基于这个基准点进行。上述命令将数据库`NorthwindCS`的全量备份保存到指定路径下。 #### 差异备份 ```sql ...
MySQL数据库在日常运维中扮演着至关重要的角色,因此掌握如何进行完整备份、增量备份与还原是每个IT专业人员必备的技能。在这个主题中,我们将深入探讨如何使用Java来实现这些功能。 首先,让我们理解什么是数据库...
误区 #20:在破坏日志备份链之后,需要一个完整备份来重新开始日志链 错误 事务日志备份会备份自上次事务日志备份以来所有的事务日志(如果从来没有过日志备份的话,那就从上一次完整备份开始)。有好几种类型的操作会...
(12)如果拒绝role1查询BankT表,则log1、log2、log3是否有权查询BankT表?为什么? 2、请完成下题 新建一个数据库TGDB,然后在SQL Server中创建“SQL Server身份验证”模式的登录帐号:TG_User,其中账户密码...
2. 在crontab配置文件中,你需要添加一个新的行来定义备份任务。cron语法基于时间,例如分钟、小时、日期等。例如,如果你想每天凌晨1点备份日志,你可以写入以下行: ``` 0 1 * * * /path/to/your/backup_script....
接下来,脚本会进行文件滚动更新,如`rem backup8.dmp backup9.dmp`等命令,这实质上是在更新备份文件的名称,使得每次备份都会覆盖前一次的备份文件,保持最新的一系列备份文件可用。 #### 3. 执行数据导出 脚本的...
`EXPIREDATE`和`RETAINDAYS`都是用来设置备份的过期时间,你可以选择设定一个具体的日期(`EXPIREDATE`)或者按照天数(`RETAINDAYS`)来决定备份的有效期限,一旦超过这个期限,备份将不再可用于恢复。 总的来说,...
SQL Server 的“维护计划”功能为管理员提供了一个图形化的界面,用于自动化执行数据库维护任务,如备份、索引优化等。下面将详细介绍如何使用维护计划来实现数据库的全备、差异备和日志备。 1. **新建维护计划**:...
Nginx日志自动归档备份shell脚本log