词条 | 事物日志文件 |
释义 | 事务日志文件简介在 Microsoft® SQL Server™ 2000 中,数据库必须至少包含一个数据文件和一个事务日志文件。数据和事务日志信息从不混合在同一文件中,并且每个文件只能由一个数据库使用。 SQL Server 使用各数据库的事务日志来恢复事务。事务日志是数据库中已发生的所有修改和执行每次修改的事务的一连串记录。事务日志记录每个事务的开始。它记录了在每个事务期间,对数据的更改及撤消所做更改(以后如有必要)所需的足够信息。对于一些大的操作(如 CREATE INDEX),事务日志则记录该操作发生的事实。随着数据库中发生被记录的操作,日志会不断地增长。 事务日志记录页的分配和释放,以及每个事务的提交或回滚。这允许 SQL Server 采用下列方式应用(前滚)或收回(回滚)每个事务: 在应用事务日志时,事务将前滚。SQL Server 将每次修改后的映象复制到数据库中,或者重新运行语句(如 CREATE INDEX)。这些操作将按照其原始发生顺序进行应用。此过程结束后,数据库将处于与事务日志备份时相同的状态。 当收回未完成的事务时,事务将回滚。SQL Server 将所有修改前的映象复制到 BEGIN TRANSACTION 后的数据库。如果遇到表示执行了 CREATE INDEX 的事务日志记录,则会执行与该语句逻辑相反的操作。这些前映象和 CREATE INDEX 逆转将按照与原始顺序相反的顺序进行应用。 在检查点处,SQL Server 确保所有已修改的事务日志记录和数据库页都写入磁盘。在重新启动 SQL Server 时所发生的各数据库的恢复过程中,仅在不知道事务中所有的数据修改是否已经从高速缓冲中实际写入磁盘时才必须前滚事务。因为检查点强迫所有修改的页写入磁盘,所以检查点表示启动恢复必须开始前滚事务的位置。因为检查点之前的所有修改页都保证在磁盘上,所以没有必要前滚检查点之前已完成的任何事务。 事务日志备份事务日志是自上次备份事务日志后对数据库执行的所有事务的一系列记录。可以使用事务日志备份将数据库恢复到特定的即时点(如输入多余数据前的那一点)或恢复到故障点。 还原事务日志备份时,Microsoft® SQL Server™ 前滚事务日志中记录的所有更改。当 SQL Server 到达事务日志的最后时,已重新创建了与开始执行备份操作的那一刻完全相同的数据库状态。如果数据库已经恢复,则 SQL Server 将回滚备份操作开始时尚未完成的所有事务。 一般情况下,事务日志备份比数据库备份使用的资源少。因此可以比数据库备份更经常地创建事务日志备份。经常备份将减少丢失数据的危险。 将事务日志备份与数据库备份一起使用只有具有自上次数据库备份或差异数据库备份后的连续事务日志备份序列时,使用数据库备份和事务日志备份还原数据库才有效。 如果日志备份丢失或损坏,必须创建数据库备份或差异数据库备份并再次开始备份事务日志。如果打算将数据库还原到这些备份内的某个即时点,应保留以前的事务日志备份。 只有当启动事务日志备份序列时,数据库或差异数据库备份才必须与事务日志备份同步。每个事务日志备份序列都必须由数据库或差异数据库备份启动。 最早的活动事务的起点,即尚未提交或回滚的事务。 这代表在恢复过程中,SQL Server 必须回滚事务的最早点。 最早事务的起点,这些事务包括已发布但尚未复制更改的复制对象。 这代表 SQL Server 仍必须复制的最早点。 备份事务日志的条件完整数据库备份或差异数据库备份执行期间不能备份事务日志。不过,在运行文件备份的同时可以备份事务日志。 下列情况不要备份事务日志: 在由于事务日志包含自上次创建备份后数据库所发生的更改,而创建了数据库或文件备份之前。有关更多信息,请参见使用文件备份。 事务日志已被显式截断。此时如果要备份事务日志,必须在事务日志截断发生后先创建数据库或差异数据库备份。 还原事务日志备份 必须满足以下条件才能应用事务日志备份: 先还原事务日志备份之前的数据库备份或差异数据库备份。 先应用在备份数据库或差异数据库之前创建的所有事务日志。 如果以前的事务日志备份丢失或损坏,最多只能将事务日志还原到丢失的事务日志之前的最后一次备份。 已经恢复了数据库,也已经前滚或回滚了所有未完成的事务。 应用事务日志备份时,必须等应用了最后的事务日志后才能恢复数据库。如果允许在应用其中一个中间事务日志备份时进行恢复,则必须从数据库备份开始重新开始整个还原操作,才能还原过那一点。 创建事务日志备份序列 为创建备份集,通常应定期生成数据库备份(如每天),并以更短的间隔生成事务日志备份(如每隔 10 分钟)。必须至少有一个数据库备份或覆盖的文件备份集,才能有效地进行日志备份。备份之间的间隔因数据的关键性和服务器的工作负荷而异。如果事务日志损坏,则将丢失自最新的日志备份后所执行的工作。为此,建议经常对关键数据进行日志备份,并注意将日志文件放在容错存储上。 事务日志备份序列独立于数据库备份。可以生成一个事务日志备份序列,然后定期生成用于开始还原操作的数据库备份。例如,假设有下列事件序列。
上午 8:00 备份数据库 中午 备份事务日志 晚上 04:00:00 备份事务日志 下午 6:00 备份数据库 晚上 08:00:00 备份事务日志 晚上 10:00 出现故障 晚上 8:00 创建的事务日志备份包含从下午 4:00 到晚上 8:00 的事务日志记录,中间跨越下午 6:00 创建数据库备份的时间。事务日志备份序列从上午 8:00 创建的初始数据库备份到晚上 8:00 创建的最后一次事务日志备份是连续的。可以使用下列过程将数据库还原到晚上 10:00 的状态(故障点): 使用最后一次创建的数据库备份还原数据库。 创建当前活动事务日志的备份。 还原下午 6:00 的数据库备份,然后应用晚上 8:00 的数据库备份和活动事务日志备份。 还原进程检测到晚上 8:00 的事务日志备份包含自上次还原备份后所发生的事务。因此,还原操作向下扫描事务日志直至下午 6:00 完成数据库备份时对应的即时点,并且只前滚事务日志备份内自该点后所完成的事务。对晚上 10:00 的事务日志备份再执行一次上述操作。 使用以前的数据库备份(早于最后一次创建的数据库备份)还原数据库。 创建当前活动事务日志的备份。 还原上午 8:00 的数据库备份,然后按顺序还原全部四个事务日志备份。不要还原下午 6:00 的数据库备份。所有完成的事务都将前滚到晚上 10:00。 这个进程所用的时间比还原下午 6:00 的数据库备份要长。 第二种还原数据库的方法注重由事务日志备份链所提供的冗余安全性,使用这个事务日志备份链,即使数据库备丢失份,也可以还原数据库。可以还原以前的数据库备份,然后还原创建该数据库备份后所创建的所有事务日志备份。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。