Compartilhar via


Compreendendo o log de transação

 

Aplica-se a: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

Tópico modificado em: 2007-08-30

Este tópico descreve os detalhes do log de transações no Microsoft Exchange Server 2007 e inclui uma breve descrição do log circular.

O log de transações do Exchange Server é um mecanismo de recuperação do ESE (Mecanismo de Armazenamento Extensível) robusto que foi projetado para restaurar de forma confiável um banco de dados do Exchange para um estado consistente depois de uma parada súbita do banco de dados. O mecanismo de log também é usado ao restaurar backups online. 

Log de transações do Exchange

Antes que alterações sejam feitas em um arquivo de banco de dados do Exchange, o Exchange grava as alterações em um arquivo de log de transações. Depois que uma alteração tiver sido registrada com segurança, ela poderá ser gravada no arquivo de banco de dados. É comum que essas alterações se tornem disponíveis para usuários finais logo depois que as alterações tenham sido protegidas no log de transações, mas antes que tenham sido gravadas no arquivo de banco de dados.

O Exchange emprega um sistema de gerenciamento de memória interno sofisticado que é ajustado para obter maior desempenho e pode gerenciar de forma eficiente o armazenamento em cache de dezenas de gigabytes (GBs) de páginas de banco de dados. Portanto, gravar fisicamente as alterações para o arquivo de banco de dados é uma tarefa de baixa prioridade durante a operação normal.

Se um banco de dados parar de repente, as alterações armazenadas em cache não serão perdidas porque o cache de memória foi destruído. Quando o banco de dados é reiniciado, o Exchange verifica os arquivos de log e reconstrói e aplica qualquer alteração ainda não gravada no arquivo de banco de dados. Esse processo é chamado repetição de arquivos de log. O banco de dados é estruturado para que o Exchange possa determinar se qualquer operação em qualquer arquivo de log já foi aplicada ao banco de dados, se precisa ser aplicada ao banco de dados ou se não pertence ao banco de dados.

Em vez de gravar todas as informações de log em um único arquivo grande, o Exchange usa uma série de arquivos de log, cada um com exatamente um megabyte, ou 1.024 quilobytes (KB) de tamanho. Quando um arquivo de log estiver cheio, o Exchange o fechará e o renomeará com um número seqüencial. O primeiro log que é preenchido termina com o nome Enn00000001.log. O nn se refere a um número de dois dígitos conhecido como nome base ou prefixo de log.

Arquivos de log de cada grupo de armazenamento são diferenciados por nomes de arquivo com prefixos numerados (por exemplo, E00, E01, E02 ou E03). O arquivo de log atualmente aberto para um grupo de armazenamento é nomeado simplesmente Enn.log — ele não tem um número de seqüência até que seja preenchido e fechado.

O arquivo de ponto de verificação (Enn.chk) controla até que ponto o Exchange progrediu na gravação de informações registradas nos arquivos de banco de dados. Há um arquivo de ponto de verificação para cada fluxo de log e um fluxo de log separado para cada grupo de armazenamento. Dentro de um único grupo de armazenamento, todos os bancos de dados compartilham um único fluxo de log. Assim, um único arquivo de log freqüentemente contém operações para vários bancos de dados.

Arquivos de log são numerados em um formato hexadecimal, para que o arquivo de log depois de E0000000009.log seja E000000000A.log, não E0000000010.log. Você pode converter números de seqüência de arquivo de log em seus valores decimais usando o aplicativo Calculadora do Windows (Calc.exe) no modo Científica. Para fazer isso, execute Calc.exe e, em seguida, no menu Exibir, clique em Científica.

Para exibir o número de seqüência decimal para um arquivo de log específico, você pode examinar seu cabeçalho usando a ferramenta Exchange Server Database Utilities (Eseutil.exe). A primeira página de 4 KB de cada arquivo de log contém informações de cabeçalho que descrevem e identificam o arquivo de log e os bancos de dados a que ele pertence. O comando Eseutil /ml [nome de arquivo de log] exibe as informações de cabeçalho. Para obter mais informações sobre o Eseutil, consulte Eseutil.

Se você usar a opção incorreta para exibir um cabeçalho (por exemplo, usando /ml com um cabeçalho de banco de dados em vez de /mh), um erro será exibido ou as informações de cabeçalho que serão exibidas poderão estar confusas ou incorretas.

Você não pode exibir o cabeçalho de um banco de dados enquanto ele é montado. Você não pode também exibir o cabeçalho do arquivo de log atual (Enn.log) enquanto qualquer banco de dados no grupo de armazenamento é montado. O Exchange mantém o arquivo de log atual aberto enquanto ele é utilizado por um banco de dados. Você pode, no entanto, exibir o cabeçalho do arquivo de ponto de verificação enquanto bancos de dados são montados. O Exchange atualiza o arquivo de ponto de verificação a cada trinta segundos e seu cabeçalho pode ser exibido, exceto durante o momento em que uma atualização está ocorrendo.

Como um administrador do Exchange, vale a pena compreender os cabeçalhos de arquivo do Exchange. Se você compreender os cabeçalhos de arquivo, poderá determinar quais arquivos de banco de dados e log serão correspondentes e quais arquivos serão necessários para recuperação bem-sucedida.

No seguinte exemplo de cabeçalho de arquivo de log, observe as primeiras quatro linhas.

Base name: e00
Log file: e00.log
lGeneration: 11 (0xB)
Checkpoint: (0xB,7DC,6F)

Essas linhas de cabeçalho do arquivo de log mostram que esse arquivo de log é o arquivo de log atual porque o nome de arquivo de log não tem um número de seqüência. A linha lGeneration mostra que quando o log for preenchido e fechado, seu número de seqüência será B, correspondendo ao valor decimal 11. O nome base é e00 e, portanto, o nome de arquivo do log final será E000000000B.log.

O valor Checkpoint no exemplo do cabeçalho anterior não é realmente lido do cabeçalho de arquivo de log, mas é exibido como se fosse. Eseutil.exe lê o valor Checkpoint diretamente de Enn.chk, para que você não tenha que inserir um comando separado para saber onde o arquivo de ponto de verificação está. Se o arquivo de ponto de verificação tiver sido destruído, o valor Checkpoint exibirá NOT AVAILABLE. Nesse caso, o ponto de verificação no arquivo de log atual (0xB) e os números 7DC e 6F indicam o local no arquivo de log onde está o ponto de verificação. Observe que você raramente terá uma necessidade prática de obter essas informações.

Se o arquivo de ponto de verificação for destruído, o Exchange ainda poderá recuperar e repetir arquivos de log de forma apropriada. Mas, para fazer isso, o Exchange inicia arquivos de log de verificação, começando com o arquivo mais antigo disponível, em vez de iniciar no log de ponto de verificação. O Exchange ignora os dados que foram aplicados ao banco de dados e trabalha seqüencialmente pelos logs até que os dados que devem ser aplicados sejam encontrados.

Geralmente, são necessários um ou dois segundos para que o Exchange verifique um arquivo de log que foi aplicado ao banco de dados. Se houver operações em um arquivo de log que devam ser gravadas no banco de dados, poderão ser necessários de 10 segundos a vários minutos para aplicá-las. Em geral, o conteúdo de arquivo de log pode ser gravado no banco de dados em 30 segundos ou menos.

Quando um banco de dados do Exchange é desligado normalmente, todos os dados pendentes são gravados nos arquivos de bancos de dados. Depois do desligamento normal, o conjunto de arquivos de banco de dados é considerado consistente e o Exchange o desanexa do seu fluxo de log. Isso significa que os arquivos de bancos de dados agora são independentes — eles estão completamente atualizados. Os logs de transações não são necessários para iniciar os arquivos de bancos de dados.

Você pode saber se um banco de dados foi desligado normalmente executando o comando Eseutil /mh e examinando os cabeçalhos de arquivo.

Com todos os bancos de dados em um grupo de armazenamento desconectado e em um estado de Desligamento Normal, todos os arquivos de log podem ser excluídos com segurança sem afetar os bancos de dados. Dessa forma, se você fosse excluir todos os arquivos de log, o Exchange geraria uma nova seqüência de logs iniciando com Enn00000001.log. Você poderia até mesmo mover os arquivos de banco de dados para um servidor ou grupo de armazenamento diferente que tenha arquivos de log existentes e os bancos de dados seriam anexados a um fluxo de log diferente.

Dica

Embora você possa excluir os arquivos de log depois que todos os bancos de dados em um grupo de armazenamento tiverem sido desligados, fazer isso afetará sua capacidade de restaurar backups mais antigos e aplicá-los. O banco de dados atual não necessita mais dos arquivos de log existentes, mas eles poderão ser necessários se você precisar restaurar um banco de dados mais antigo.

Se um banco de dados estiver em um estado de Desligamento Anormal, todos os logs de transações existentes do ponto de verificação em diante deverão estar presentes para que você possa montar o banco de dados novamente. Se esses logs estiverem indisponíveis, você deverá reparar o banco de dados executando o comando Eseutil /p para tornar o banco de dados consistente e pronto para ser iniciado.

Aviso

Se você precisar reparar um banco de dados, alguns dados serão perdidos. Freqüentemente, a perda de dados é mínima; porém, ela pode ser catastrófica. Depois de executar Eseutil /p em um banco de dados, você deve reparar completamente o banco de dados com as duas operações a seguir: Primeiro, execute Eseutil/d para desfragmentar o banco de dados. Essa operação descarta e reconstrói todos os índices de banco de dados e árvores de espaço. Em segundo lugar, execute a ferramenta Verificador de Integridade do Armazenamento de Informações (Isinteg.exe) em seu modo –fix. Essa ferramenta verifica o banco de dados em busca de inconsistências lógicas que são criadas descartando logs de transações pendentes. Por exemplo, pode haver referências no banco de dados que não estejam atualizadas entre si. Isinteg.exe tenta corrigir esses problemas com o mínimo possível de perda de dados.

Além de permitir que o Exchange seja recuperado com confiabilidade de uma parada de banco de dados inesperada, o log de transações é também essencial para fazer e restaurar backups online. Para obter mais informações sobre como fazer e restaurar backups online, consulte Backup e restauração de banco de dados.

Log circular

Embora não seja uma prática recomendada, você pode configurar o Exchange para economizar espaço em disco habilitando o log circular. O log circular permite que o Exchange substitua arquivos de log de transações depois que os dados contidos nos arquivos de log tiverem sido confirmados para o banco de dados. Porém, se o log circular estiver habilitado, será possível recuperar dados somente até o último backup completo.

No log de transações padrão usado pelo Exchange 2007, cada transação de banco de dados em um grupo de armazenamento é gravada em um arquivo de log e, depois, no banco de dados. Quando um arquivo de log atinge um megabyte (MB) em tamanho, ele é renomeado e um novo arquivo de log é criado. Com o tempo, isso resultará em um conjunto de arquivos de log. Se o Exchange parar inesperadamente, você poderá recuperar as transações repetindo os dados desses arquivos de log no banco de dados. O log circular substitui e reutiliza o primeiro arquivo de log depois que os dados contidos nele foram gravados no banco de dados.

No Exchange 2007, o log circular está desabilitado por padrão. Ao habilitá-lo, você reduz os requisitos de espaço de armazenamento da unidade. Entretanto, sem um conjunto completo de arquivos de log de transações concluídas, não será possível recuperar qualquer dado mais recente do que o último backup completo. Portanto, em um ambiente de produção normal, o log circular não é recomendável.

Para obter informações sobre como habilitar e desabilitar o log circular no Exchange 2007, consulte Como habilitar ou desabilitar o log circular para um grupo de armazenamento.

Replicação contínua e log circular

Você pode combinar o log circular com a replicação contínua. Nessa configuração, você tem um novo tipo de log circular, chamado CRCL (log circular de replicação contínua), que é diferente do log circular ESE descrito anteriormente neste tópico. Enquanto o log circular ESE é executado e gerenciado pelo serviço de Armazenamento de Informações do Microsoft Exchange, o CRCL é executado e gerenciado pelo Serviço de Replicação do Microsoft Exchange.

Quando ativado, o log circular do ESE não gera arquivos de log adicionais; ao invés disso, ele substitui o arquivo de log atual, quando necessário. Contudo, em um ambiente de replicação contínua, os arquivos de log são necessários para envio e repetição. O resultado é que, ao ativar o CRCL, o arquivo de log atual não é substituído e são gerados arquivos de log fechados para o processo de envio e repetição de log. Especificamente, Serviço de Replicação do Microsoft Exchange gerencia o CRCL para que a continuidade dos logs seja mantida e os logs não sejam excluídos pelo excluidor de logs se ainda forem necessários para replicação. Portanto, habilitar o CRCL não deve afetar negativamente a replicação.

Na versão RTM (Versão de Produção) do Exchange 2007, há suporte para a combinação de log circular com CCR (replicação contínua em cluster) ou LCR (replicação contínua local). Contudo, não recomendamos seu uso, porque não permite recuperação com "rolagem para frente" depois da restauração de um backup. O Exchange 2007 Service Pack 1 (SP1) também permite a habilitação de log circular em grupos de armazenamento em ambientes de CCR, LCR ou SCR (replicação contínua em espera). Contudo, essa prática também não é recomendada, pelo motivo indicado anteriormente. Quando ativada em qualquer um desses ambientes, a funcionalidade é CRCL e não log circular ESE (conhecido também como log circular JET (Joint Engine Technology)). Em um ambiente de CCR, LCR ou SCR, você deve usar sempre o processo a seguir para habilitar ou desabilitar o log circular:

  1. Suspenda a replicação contínua com o cmdlet Suspend-StorageGroupCopy.

  2. Habilite ou desabilite o log circular. Para obter etapas detalhadas sobre como habilitar ou desabilitar o log circular, consulte Como habilitar ou desabilitar o log circular para um grupo de armazenamento.

  3. Desmonte e em seguida monte novamente o banco de dados no grupo de armazenamento para o qual o log circular está sendo habilitado ou desabilitado.

  4. Reinicie a replicação contínua com o cmdlet Resume-StorageGroupCopy.

Para grupos de armazenamento em um ambiente de LCR, antes de executar o cmdlet Enable-StorageGroupCopy para ligar a LCR em um grupo de armazenamento, verifique se as configurações atuais de log circular foram detectadas e usadas pelo Armazenamento de Informações do Microsoft Exchange, desmontando e montando novamente o banco de dados do grupo de armazenamento. Enquanto o serviço de Armazenamento de Informações do Microsoft Exchange exige que você desmonte e monte novamente o banco de dados para detectar e utilizar as alterações de configuração, o serviço de Replicação do Microsoft Exchange consegue detectar e utilizar a alteração de configuração dinamicamente e sem reiniciar. Portanto, se o procedimento anterior não for executado, um banco de dados pode ficar em uma situação em que o serviço de Replicação do Microsoft Exchange considera que o log circular esteja desligado (ou ligado) enquanto que o serviço de Armazenamento de Informações do Microsoft Exchange considera que o log circular esteja no estado oposto. Isso pode resultar em arquivos de log truncados prematuramente.

Dica

Desabilitar LCR ou SCR permite que os backups ou logs circulares excluam arquivos de log sem copiar, mas não há a opção de desabilitar em CCR. Independentemente da habilitação de CRCL, em CCR, os logs que não foram replicados nunca são excluídos.

Para manter sob controle a quantidade de logs de transação criados, os administradores às vezes habilitam o log circular durante grandes movimentações de caixas de correio. Como uma movimentação de caixa de correio é uma operação que envolve dois bancos de dados diferentes, você pode habilitar o log circular para ambos os bancos de dados durante a movimentação de caixa de correio.

Dica

Como o log circular interfere na capacidade de atualização do grupo de armazenamento em caso de falha, não recomendamos o uso do log circular por períodos longos.

Você pode habilitar CRCL em ambientes de CCR, LCR e SCR para movimentações de caixas de correio ou outros cenários que causem um aumento grande nos arquivos de log. Entretanto, durante o tempo em que CRCL estiver habilitado, você não poderá executar nenhum backup. Por isso, verifique se:

  • As movimentações de caixa de correio não interferem com operações de backup, porque se o CRCL estiver ligado, não será possível fazer backups.

  • O CRCL é desabilitado após a conclusão das movimentações de caixas de correio, para que os backups possam ser reiniciados.