SQL Server 大型事务日志备份与修复问题
问:我在备份时注意到一些异常现象,希望您能解释一下。我们需要经常备份 62GB 的生产数据库,以刷新应用程序开发人员所使用的数据。我们总是先删除旧副本然后再还原新副本。还原的副本与生产数据库大小相同,而且数据看起来也一样,但是与备份过程相比,还原过程所需的时间要长很多。这是怎么回事?为什么还原比备份需要更长的时间?
答:其实这不属于异常现象。根据您所处的环境,这种现象通常是预料之中的。备份和还原所需的时间之所以不同,是由于每个流程必须执行的步骤不同。
备份数据库包含两个步骤。主要就是对数据库执行 IO 读取操作以及对备份设备执行 IO 写入操作:
备份步骤 1 读取数据文件中所有分配的数据,然后将其写入备份设备。
备份步骤 2 读取某些事务日志,然后将其写入备份设备。
所需的事务日志数量可能会差异很大,但其数量一定能将还原的数据库恢复到相同的时间点
而还原数据库最多可能包含四个步骤。涉及的工作要比读写 IO 复杂得多:
还原步骤 1 如果数据库文件不存在,则创建它们。
还原步骤 2 从备份中读取所有数据和事务日志,然后将其写入相关的数据库文件。
还原步骤 3 对事务日志运行恢复过程的“重做”阶段。
还原步骤 4 对事务日志运行恢复过程的“撤消”阶段。
两个备份步骤所需时间与还原步骤 2 所需时间大致相同(假定硬件配置类似并且服务器上没有用户活动)。如果数据文件较大并且需要进行零初始化(这在 SQL Server 2000 中是需要执行的操作,在 SQL Server 2005 中是默认操作),则还原步骤 1 可能需要较长时间。
为避免花费较长时间,请不要在开始还原之前删除现有文件。或者,也可以启用即时初始化,以便快速创建这些文件(有关详细信息,请访问 msdn.microsoft.com/-library/ms175935.aspx)。
还原步骤 3 和 4 是对还原的数据库进行恢复,以便确保事务一致性;此流程与崩溃恢复期间对数据库执行的操作流程相同。恢复操作所需时间取决于需要处理的事务日志量。例如,如果在进行备份时恰好有一个长时间运行的事务处于活动状态,则该事务的所有事务日志都会被备份进来,因此届时不得不进行回滚。
关键字:SQL Server 、事务、日志
新文章:
- CentOS7下图形配置网络的方法
- CentOS 7如何添加删除用户
- 如何解决centos7双系统后丢失windows启动项
- CentOS单网卡如何批量添加不同IP段
- CentOS下iconv命令的介绍
- Centos7 SSH密钥登陆及密码密钥双重验证详解
- CentOS 7.1添加删除用户的方法
- CentOS查找/扫描局域网打印机IP讲解
- CentOS7使用hostapd实现无AP模式的详解
- su命令不能切换root的解决方法
- 解决VMware下CentOS7网络重启出错
- 解决Centos7双系统后丢失windows启动项
- CentOS下如何避免文件覆盖
- CentOS7和CentOS6系统有什么不同呢
- Centos 6.6默认iptable规则详解