Número de seqüência de log e planejamento de restauração

 Este tópico é relevante para bancos de dados SQL Server que usam o modelo de recuperação completa.

Para restaurar planejamento, os números de seqüência de log (LSNs) mais importantes são o primeiro e o último LSNs. Esses LSNs podem ser obtidos nos seguintes locais:

  • A tabela backupset em msdb. As colunas são nomeadas first_lsn e last_lsn.

  • A instrução RESTORE HEADERONLY. As colunas são nomeadas FirstLSN e LastLSN.

A tabela a seguir define estas condições para backups diferentes.

Termo

Definição

first_lsn ou FirstLSN

Número de seqüência de log do primeiro ou do registro de log mais antigo no conjunto de backup.

Para dados e backups diferenciais, o primeiro LSN identifica o registro de log mais recente que é necessário para executar recuperação com esse backup.

Para backups de log, o primeiro LSN identifica o primeiro registro de log incluído no backup.

last_lsn ou LastLSN

Número de seqüência de log do próximo registro de log no conjunto de backup.

O último LSN identifica o próximo registro de log além do término do backup. Para dados e backups diferenciais (e para backups de log que contêm operações registradas em massa), o roll forward deve ir até pelo menos este LSN. Caso contrário, os dados copiados durante a restauração são inconsistentes.

Para backups de log, o backup de log inclui registros de log até este LSN, mas não o inclui.

Números de seqüência de log e dados ou backups diferenciais

Para dados e backups diferenciais, os dados de log entre first_lsn e last_lsn são incluídos no backup. Isso permite ao backup ser usado sem backups de log para recuperar last_lsn.

Para um dado ou backup diferencial, last_lsn será o ponto de recuperação mais recente possível se você usar o backup dentro de uma seqüência de restauração. Se um ponto de recuperação anterior for necessário, um backup anterior deve ser usado.

Quando você planeja qual backup de log usar para rolar à frente após a restauração de um dado ou backup diferencial, você normalmente inicia com o primeiro backup de log após o dado ou backup diferencial. Quando você inspecionar as propriedades do backup, você encontrará um backup de log cujo first_lsn é menor que ou igual ao last_lsn dos dados ou backup diferencial e de quem last_lsn é maior que o last_lsn dos dados ou backup de log diferencial.

Números de seqüência de log e backups de log em uma cadeia de log

Uma cadeia de logs nova ou inicia com o primeiro banco de dados completo seguindo a criação de banco de dados ou trocando depois de um modelo de recuperação simples para um modelo de recuperação bulk logged ou completo. No primeiro backup de log em uma cadeia, backupset.begins_log_chain = 1.

São usados o first_lsn e last_lsn para unir backups de log em uma seqüência consecutiva (cadeia de logs). Você pode usar uma seqüência de backups de log sucessivos ao roll forward de um banco de dados dos dados mais recentes ou backup diferencial ou de dados danificados ou perdidos no backup anterior e backups diferenciais.

Em um backup de log, first_lsn é o LSN do primeiro registro de log no backup e iniciando com este registro de log, o backup de log inclui registros de log, mas exceto o registro de log cujo LSN é last_lsn. Dois backups de log são consecutivos se e somente se o LSN do último registro de log no backup anterior (Backup_A) for maior ou igual ao LSN do primeiro registro de log no backup posterior (Backup_B); ou seja, Backup_A.last_lsn >= Backup_B.first_lsn. Se isso não for verdadeiro, um intervalo existirá entre os dois backups.

A significação da relação entre esses LSN é como segue:

  • A.last_lsn = B.first_lsn

    Se A.last_lsn = B.first_lsn, B é normalmente o backup de log levado imediatamente depois de A.

    Esta relação é mostrada na ilustração a seguir. Note que o registro de log nque ocorre em backup de log B foi registrado como last_lsn em backup de log A e como first_lsn em backup de log B.

    last_lsn do backup de log A=first_lsn do backup de log B

  • A.last_lsn > B.first_lsn

    Se A.last_lsn > B.first_lsn, existe sobreposição. Normalmente, a sobreposição resulta da criação de uma única cópia de backup de log ou do primeiro backup de log levado depois de uma recuperação pontual. A sobreposição pode envolver bifurcações de recuperação diferentes. Para obter mais informações, consulte Caminhos de recuperação.

Causas de cadeias de logs quebradas

Normalmente, o Mecanismo de banco de dados do SQL Server previne intervalos na seqüência de backups de log, mantendo a cadeia de log intacta. Porém, um administrador de banco de dados pode quebrar a cadeia de log alterando o modelo de recuperação para simples e novamente completo ou com log de operações em massa.

Você não pode efetuar roll foward nas mudanças do modelo de recuperação que envolva o modelo de recuperação simples porque a cadeia de logs está quebrada. Depois de alterar o modelo de recuperação bulk-logged completo você deve levar uma base diferencial nova ou conjunto de bases diferenciais. Opcionalmente, você pode usar backups diferenciais para acabar com um intervalo.