Microsoft SQL Server 事物日志中每個(gè)記錄都由一個(gè)唯一的日志序列號(hào)(LSN)標(biāo)識(shí),如果 LSN2 大于 LSN1,則 LSN2 所標(biāo)識(shí)的日志記錄描述的更改發(fā)生在日志記錄 LSN1 描述的更改之后。順序還原期間,還原完整備份后,數(shù)據(jù)被還原到進(jìn)行備份的時(shí)間點(diǎn)相對(duì)應(yīng)的 LSN,利用差異和日志備份可以將還原的數(shù)據(jù)庫(kù)推到稍后的時(shí)間,該時(shí)間與一個(gè)更高的 LSN 相對(duì)應(yīng)。還原計(jì)劃中,最重要的日志序列號(hào)(LSN)是第一個(gè)和最后一個(gè) LSN。
first_lsn或FirstLSN:備份集中第一個(gè)或最早日志記錄的日志序列號(hào)。對(duì)于數(shù)據(jù)備份和差異備份,第一個(gè) LSN 標(biāo)識(shí)的是需要此備份執(zhí)行恢復(fù)的最早日志記錄,對(duì)于日志備份,第一個(gè) LSN 標(biāo)識(shí)的是備份中包含的第一個(gè)日志記錄。last_lsn或LastLSN:備份集之后的下一條日志記錄的序列號(hào)。最后一個(gè) LSN 標(biāo)識(shí)的是備份結(jié)束后的下一個(gè)日志記錄。對(duì)于數(shù)據(jù)備份和差異備份(以及包含大容量日志操作的日志備份)。必須至少前滾到此 LSN,否則,還原期間復(fù)制的數(shù)據(jù)會(huì)出現(xiàn)不一致。對(duì)于日志備份,它包含的日志記錄最多到(但不包含)此LSN。
日志序列號(hào)和數(shù)據(jù)備份或差異備份對(duì)于數(shù)據(jù)備份或差異備份,first_lsn 和 last_lsn 之間的日志數(shù)據(jù)包含在備份中,這使得使用該備份(而無(wú)需日志備份)就可以恢復(fù)到 last_lsn。對(duì)于數(shù)據(jù)備份或差異備份,如果按還原順序使用備份,則 last_lsn 可能是最早的恢復(fù)點(diǎn),如果需要更早的恢復(fù)點(diǎn),則必須使用更早的備份。
當(dāng)計(jì)劃在還原數(shù)據(jù)備份或差異備份后使用哪個(gè)日志備份前滾時(shí),通常將從該數(shù)據(jù)備份或差異備份之后的第一個(gè)日志備份開(kāi)始,檢查備份的屬性時(shí),你就會(huì)發(fā)現(xiàn)這樣一個(gè)日志備份,其 first_lsn 小于或等于數(shù)據(jù)備份或差異備份中的 last_lsn,并且 last_lsn 大于數(shù)據(jù)備份或者差異備份中的 last_lsn。
日志序列號(hào)和日志鏈中的日志備份新的日志鏈將隨順序局創(chuàng)建后的第一個(gè)完整數(shù)據(jù)庫(kù)備份而啟動(dòng),或在從簡(jiǎn)單恢復(fù)模式切換到完整或大容量日志恢復(fù)模式后啟動(dòng)。first_lsn 和 last_lsn 用于將日志備份連成一個(gè)連續(xù)的序列。可以使用連續(xù)的日志備份序列前滾數(shù)據(jù)庫(kù)。
在日志備份中,first_lsn 是備份中第一個(gè)日志記錄的 LSN,從此日志記錄開(kāi)始,日志備份最多包含到 LSN 為 last_lsn 的日志記錄。而且僅當(dāng)早期備份(Backup_A)中的最后一個(gè)日志記錄的 LSN 大于或等于后期備份(Backup_B)的第一個(gè)日志記錄的 LSN 時(shí),這兩個(gè)日志備份才是連續(xù)的;也就是 Backup_A.last_lsn >= Backup_B.first_lsn。如果不是這樣,這兩個(gè)備份之間將存在空白。
這些 LSN 之間關(guān)系的意義如下:
A.last_lsn = B.last_lsn:則 B 通常是緊跟著 A 后進(jìn)行的日志備份、A.last_lsn > B.last_lsn:存在重疊。重疊通常是由于創(chuàng)建僅復(fù)制日志備份或在時(shí)點(diǎn)還原后備份第一個(gè)日志引起的。重疊可能會(huì)涉及不同的恢復(fù)分叉。
日志鏈斷開(kāi)的原因,通常,SQL Server 數(shù)據(jù)庫(kù)引擎會(huì)防止日志備份序列中出現(xiàn)空白,從而使日志鏈保持完整。但是,如果數(shù)據(jù)庫(kù)管理員先將恢復(fù)模式更改為簡(jiǎn)單恢復(fù)模式,然后再將其改回完整或者大容量日志恢復(fù)模式,會(huì)使日志鏈斷開(kāi)。
以上內(nèi)容是關(guān)于MSSQL 日志序列號(hào)和數(shù)據(jù)庫(kù)還原的關(guān)系的介紹,要想了解更多相關(guān)信息、教育培訓(xùn)內(nèi)容,請(qǐng)隨時(shí)關(guān)注唯學(xué)網(wǎng),小編會(huì)第一時(shí)間為大家更新、跟進(jìn)最新信息。