Como funciona a Database do Exchange?

Olá pessoal,

 

Hoje vamos falar sobre como funciona a database do Exchange e seus processos internos. Este processo é um tanto complicado de explicar, então se ficar alguma dúvida, não deixe de comentar.

 

Serviço Microsoft Exchange Information Store

 

A database é controlada pelo serviço chamado Microsoft Exchange Information Store, este por sua vez executa o processo Microsoft.Exchange.Store.Service.exe (Antigamente era o store.exe, lembram?) para cada uma das databases iniciadas e cria um cache separado para cada uma delas.

 

 

Este cache, mantém em memória RAM todas as atividades que estão sendo executadas na base, como novos e-mails, remoção de e-mail, modificações, etc.

 

É importante frisar que independente do tipo de cliente que se utilize para conectar no Exchange, ele sempre se conectará no cache. Nenhum cliente se conecta diretamente na database, ou o arquivo .edb .

 

Arquivos que compõem a Database.

 

Dentro da pasta aonde a base é armazenada, existem diversos arquivos, vamos verificar cada um deles.

 

 

Mailbox database.edb – Este é o arquivo da database propriamente dito.

E0000000001.log, E0000000002.log, E0000000003.log, etc. – Estes são os arquivos de log utilizados pelo Exchange para processar as informações de transação;

e00.chk – Um arquivo de checkpoint que mantém a relação dos arquivos de transação utilizados e o que está em utilização;

E00tmp.log – Um arquivo temporário de log;

E00res00001.jrs and E00res00002.jrs – Arquivos temporários de log utilizados pelo Exchange em uma situação de disco cheio.

 

Como funciona tudo isto?

 

Ok, mas como isto tudo se integra e funciona?

 

  1. Lembram que quando iniciamos uma database ela cria um Cache em memória RAM? Toda transação que acontece no Exchange é gravado no cache (Memória RAM).
  2. Quando esta transação atinge o equivalente a 1 MB, ela é gravada em disco, gerando um arquivo de log de 1 MB (E0000000001.log, E0000000002.log, E0000000003.log, etc.)
  3. O arquivo de transação atualmente em uso é o E0N.log, o N significa que este último número é variável, a primeira base sempre será E00.log, a segunda E01.log e assim por diante.
  4. Assim que este arquivo de log atualmente em uso atinge 1 MB, ele é renomeado para E0000000001.log e o próximo log será E0000000002.log e assim por diante. (Detalhe, estes logs são em Hexadecimal, então depois que chegar no E0000000009.log, o próximo log será E000000000A.log
  5. Nada ainda foi gravado na base em si (.edb) tudo que foi alterado até o momento está nos logs.
  6. Quando então estes logs serão gravados na base? Após uma certa quantidade de logs são gerados, eles serão gravados na base. Quem cuida deste processo é o arquivo de Checkpoint (.chk), ele mantém uma referência para cada um dos logs gerados, qual o mais novo, qual o mais velho.
  7. Em uma database sem DAG quando atingir 20 arquivos de transação, estes serão gravados na base. Em uma database com DAG, somente quando atingir 100 arquivos de transação. (Um detalhe importante, as informações não são gravadas dos logs para a base, mas sim do cache para base. Pois é muito mais rápido gravar da memória RAM para disco, do que de disco para disco.).
  8. Estes arquivos não são deletados, eles somente serão deletados após um backup que seja Exchange Aware.

 

Detalhes interessantes

 

Porque é gravado da memória para o Log e não direto para o arquivo da database?

Por alguns bons motivos, primeiramente que não é prudente escrever diretamente na base qualquer pequena transação que aconteça e correr risco de corrupção.

 

Segundo, um arquivo de log é escrito de forma sequencial e quando a escrita ocorre na database, ele corre de forma randômica. Imagine esta diferença na agulha do disco escrevendo algo sequencial e escrevendo de forma randômica.

 

Posso deletar os arquivos de log mais antigos se o meu disco encher?

Não, nunca, nem pense nisso, jamais. O recomendado é que você execute um backup que assim o Exchange saberá que foi feito backup e apagará os logs pendentes.

 

Não consigo rodar um backup, o que posso fazer?

A única opção que vejo é habilitar o Circular Logging de forma temporária. Com o Circular Logging habilitado, todos os logs que foram gravados na database serão apagados e ele manterá apenas 20 logs por vez. Para habilitar o Circular Logging, execute o seguinte comando:

 

Set-MailboxDatabase –Identity <NomedaDatabase> -CircularLoggingEnabled $True

 

Depois de rodar este comando, apenas desmonte a database  e monte novamente.

 

 

Por enquanto é isto, caso tenham dúvidas, deixem um comentário!

Até mais pessoal!

2 comentários em “Como funciona a Database do Exchange?

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: