24
FairCom Documentation Descrição das opções de backup do c-treeACE Server Preparado exclusivamente para Totvs e seus clientes Abril de 2008 © Copyright 2014, FairCom Corporation. All rights reserved. c-treeACE, c-treeRTG, c-treeAMS, c-tree Plus, c-tree, r-tree, FairCom, and FairCom’s circular disc logo are trademarks of FairCom Corporation, registered in the United States and other countries. All other trademarks are the property of their holders.

Descrição das opções de backup do c tree Server · Outras opções de Backup.....16 5. Resolução de problemas específicos de Dump dinâmico com o c-tree ... Server encontra-se

Embed Size (px)

Citation preview

FairCom Documentation

Descrição das opções de backup do c-treeACE Server Preparado exclusivamente para Totvs e seus clientes

Abril de 2008

© Copyright 2014, FairCom Corporation.

All rights reserved.

c-treeACE, c-treeRTG, c-treeAMS, c-tree Plus, c-tree, r-tree, FairCom, and FairCom’s circular disc logo are

trademarks of FairCom Corporation, registered in the United States and other countries. All other trademarks are the

property of their holders.

www.faircom.com All Rights Reserved ii

Contents

1. Dump dinâmico ..................................................................................................... 1

1.1 Online Disk Snapshot ............................................................................................. 3

2. Configuração do Dump dinâmico ........................................................................ 4

2.1 ctdump – Programando os backups automáticos do c-tree Server ......................... 4

2.2 ctrdmp – Restaurando backups do c-tree Server .................................................... 8

2.3 Recuperação do Dump Dinâmico ........................................................................... 9

2.4 ctfdmp – Avançando o Backup no tempo (Rollforward) ...................................... 12

2.4.1 Rolling Back do Backup ............................................................................ 13

3. Reconstruindo Índices e Compactando arquivos de dados ............................ 14

4. Outras opções de Backup .................................................................................. 16

5. Resolução de problemas específicos de Dump dinâmico com o c-tree

Server .................................................................................................................. 19

6. Index .................................................................................................................... 22

www.faircom.com All Rights Reserved 1

Chapter 1

1. Dump dinâmico

Um dump dinâmico fornece um método seguro de realizar o backup dos dados enquanto o c-tree Server encontra-se operando. O administrador do servidor pode programar um dump de arquivos específicos, não necessitando obrigatoriamente realizar o dump completo de toda a base. Assim, pode-se copiar todos os arquivos do sistema, ou um subconjunto destes. O dump é executado enquanto o servidor está operando e executando atividades normais, e é transparente para os usuários.

O servidor realiza o dump no momento programado, ou no primeiro momento apropriado após a programação. Ao iniciar um dump programado, o c-tree Server interrompe temporariamente o início de novas transações e inicia efetivamente o dump tão logo todas as transações ativas se encerrem (ou após um certo tempo definido pelo usuário, ao final do qual “encerra” as transações pendentes). Com o início do processo de dump, novas transações podem ser efetuadas sem qualquer limitação.

Os processos de dump dinâmico e recovery foram projetados para arquivos transacionados. Arquivos não transacionados podem ser armazenados sob certas restrições, conforme descrito nas seções abaixo.

Dumping de Arquivos do Sistema

Ao selecionar os arquivos a serem salvos no processo de dump, inclua sempre que possível o arquivo FAIRCOM.FCS, que contém informações sobre as contas dos usuários. Por outro lado, não se deve incluir no processo de dump arquivos não c-tree como arquivos texto. Um exemplo de tal arquivo é CTSTATUS.FCS. Caso seja incluído, haverá um erro relativo a este arquivo no processo de recuperação do dump (ctrdump), embora os demais arquivos sejam recuperados corretamente. Note que ao finalizar a recuperação do dump, um novo arquivo CTSTATUS será criado, contendo informações sobre o processo de restauração.

Os arquivos S*.FCS e D*.FCS serão automaticamente incluídos no dump, pois são necessários no processo de restauração dos arquivos a um estado consistente. Estes arquivos serão apagados no final do processo.

Nota Microsiga: o arquivo FAIRCOM.FCS contém informações sobre os usuários c-tree. No momento, todas as conexões ao c-tree Server realizadas pelo Protheus utilizam o mesmo usuário. Assim, por hora, o arquivo FAIRCOM.FCS deve ser salvo apenas nos casos em que a senha do usuário ADMIN tenha sido alterada. Caso este arquivo seja corrompido em algum momento, o mesmo pode ser removido e o c-tree Server criará um novo arquivo sem as customizações realizadas pelos usuários. Caso nenhum usuário do c-tree Server tenha sido criado, a única perda possível seria da alteração na senha do administrador.

Dumping de Arquivos TRNLOG

Para arquivos TRNLOG, o processo de dump dinâmico automaticamente inclui um registro com as atualizações realizadas durante o processo. Quando os arquivos são recuperados (restored) utilizando o utilitário ctrdmp, o processo de recuperação automaticamente utiliza os logs gravados no dump para restaurar os arquivos TRNLOG a um estado consistente no momento programado do backup.

Dump dinâmico

www.faircom.com All Rights Reserved 2

Dumping de Arquivos PREIMG

Embora recuperação automática não seja possível para arquivos PREIMG, é possível realizar backups dinâmicos periódicos. Utilizando a palavra chave PREIMAGE_DUMP no arquivo de configuração do c-tree Server (ctsrvr.cfg), é possível promover arquivos PREIMG para arquivos totalmente transacionados (TRNLOG) durante o processo de dump dinâmico. A promoção a um arquivo TRNLOG significa que um registro completo das transações é mantido durante o processo de dump. Este processo garante que qualquer alteração realizada nos arquivos durante o backup será salva nestes arquivos especiais de registro de transação. A possibilidade de realizar backup dinâmico nos dados do usuário minimiza a limitação de recuperação automática deste modelo.

Dumping de Arquivos não transacionados

O backup de arquivos não transacionados é possível enquanto o servidor encontra-se operacional, dentro de certas limitações. Certamente, a forma mais segura de se realizar um backup completo dos dados e índices enquanto o servidor permanece operacional é garantir que todos os arquivos sejam transacionados. Desta forma, pode-se garantir que todos os dados e índices estejam em completo sincronismo, e que atualizações possam continuar ocorrendo nos arquivos durante o processo.

Embora seja possível incluir arquivos não transacionados no script de backup, não há proteção contra atualizações nestes arquivos. Em outras palavras, é possível que o arquivo seja atualizado durante o processo de dump dinâmico, e o estado do arquivo sendo gravado irá refletir seu status no momento em que a sua gravação efetiva ocorre. A atualização de um arquivo transacionado durante o dump dinâmico não causa problemas, pois o processo de restauração do dump irá utilizar os registros de transação para recuperar o arquivo a um estado consistente (equivalente ao início programado do backup). Entretanto, atualizar arquivos que NÃO são transacionados enquanto eles estão sendo gravados resulta em um backup indefinido, devido ao estado desconhecido do arquivo.

A palavra chave !PROTECT, sem nenhum argumento, quando adicionada ao script do dump dinâmico, faz com que arquivos não transacionados sejam copiados de forma correta, impedindo que atualizações ocorram no momento em que o arquivo específico está sendo gravado. Não é possível garantir que o(s) arquivo(s) de índices fique(m) consistente(s) com o arquivo de dados, pois eles não são gravados ao mesmo tempo. As atualizações no arquivo são suspensas apenas enquanto o arquivo de dados está sendo gravado.

Esta técnica garante que o arquivo de dados seja gravado em um estado conhecido. O procedimento de recuperação de um arquivo não transacionado necessariamente tem que ser seguido pela reconstrução (rebuild) dos índices. Como a proteção ocorre apenas para os arquivos de dados, na maior parte das situações os índices não precisam ser gravados, pois terão que ser reconstruídos. Uma vez mais, esta limitação se refere apenas a arquivos não transacionados. Para arquivos transacionados (TRNLOG ou PREIMG), os arquivos de dados e índices podem ser gravados e estarão em completo sincronismo ao final do processo de restauração.

Nota: !PROTECT suspende atualizações apenas a nível ISAM. A palavra chave !PROTECT_LOW também suspende atualizações em baixo nível, além do nível ISAM. A FairCom sugere o uso de !PROTECT_LOW quando funções de baixo nível são utilizadas.

Nota Microsiga: No momento, a Microsiga não utiliza funções de baixo nível como as necessárias para utilização de !PROTECT_LOW.

É possível se realizar o back up de arquivos de dados que não estejam submetidos ao controle transacional enquanto o c-tree Server permanece operacional. Certamente, a forma mais segura de realizar um backup completo dos arquivos de dados e índices enquanto o c-tree Server permanece operacional é garantir que todos os arquivos sejam transacionados. Desta forma,

Dump dinâmico

www.faircom.com All Rights Reserved 3

você garante que todos os arquivos de dados e índices estejam completamente sincronizados, e as atualizações nos arquivos podem continuar durante o processo do dump dinâmico.

Alguns desenvolvedores optam por não implementar controle transacional por alguma razão específica. Em alguns casos, desenvolvedores migrando do modelo standalone multi-usuário do c-tree Plus para o c-tree Server (ou que mantém o suporte simultâneo aos dois modelos) mantém as seguintes palavras chave no arquivo de configuração do c-tree Server para garantir a integridade destes arquivos durante a operação normal do servidor:

COMPATIBILITY FORCE_WRITETHRU

COMPATIBILITY WTHRU_UPDFLG

Assim, caso você utilize arquivos não transacionados no seu sistema, para garantir a integridade dos arquivos em caso de queda do sistema e também durante a realização de um dump dinâmico, considere a utilização das palavras chave acima. Note, porém, que caso estes arquivos não transacionados tenham atualizações com grande freqüência no seu sistema, a garantia de integridade dada pelas palavras chave acima terá um preço em termos de degradação de performance do sistema.

Nota Microsiga: Nas versões atuais do Protheus (até Abril de 2008), os arquivos sigamat.emp, sigahl*.hl*, profile.usr, sigapss.spf não são transacionados, e assim, requerem o uso das palavras chave acima para minimizar o risco de problemas em casos de falha no sistema. Como estes arquivos são raramente atualizados, não é de se esperar um impacto significativo na performance. Há possibilidade de alterações no futuro que façam com que estas palavras chave não mais sejam necessárias. Procure manter seu sistema e configuração atualizados conforme procedimentos sugeridos pela Totvs/Microsiga.

Arquivos Stream Segmentados no Dump

Um arquivo gerado pelo dump dinâmico pode ser muito grande, dependendo do tamanho dos arquivos sendo gravados. Para evitar problemas com o sistema operacional, o c-tree Server automaticamente cria arquivos stream com extensão máxima de 1 GB. Por exemplo, realizar o dump de 5 GB de dados em um arquivo denominado backup produzirá 5 arquivos stream de 1 GB cada, com os nomes backup, backup.001, backup.002, backup.003, e backup.004. Este valor padrão de 1 GB pode ser modificado com a palavra chave !EXT_SIZE no arquivo script de dump.

O c-tree Server também permite que sejam criados arquivos stream de dump segmentados, em que o script de dump define o nome e localização dos segmentos. Veja o c-tree Server Administrator's Guide para detalhes sobre a utilização da opção !SEGMENT no arquivo de script de dump.

1.1 Online Disk Snapshot Alguns subsistemas de disco suportam que se tire uma imagem instantânea (snapshot) do disco, sem interferir com a execução do sistema. Esta opção, quando disponível, fornece uma forma de realizar o backup de arquivos TRNLOG sem a perda de dados ou com a produção de um estado transacional inconsistente. Um instantâneo do disco não inclui o cache do servidor, assim para arquivos não transacionados ou arquivos PREIMG, atualizações no arquivo podem ser perdidas. Estes arquivos (não transacionados e PREIMG) devem ter os índices reconstruídos. Para os arquivos TRNLOG, os registros de transação contém as atualizações que foram committed, de tal forma que estes arquivos serão restaurados automaticamente a um estado consistente tão logo o c-tree Server seja reiniciado, permitindo que o processo de recuperação automática efetue os ajustes necessários.

www.faircom.com All Rights Reserved 4

Chapter 2

2. Configuração do Dump dinâmico

O processo de dump é realizado pelo utilitário ctdump, e a recuperação ou restauro dos dados é realizada com o utilitário ctrdmp. Os processos de Rollback e Rollforward são realizados, respectivamente, pelos utilitários ctdmp e ctfdmp. Estes utilitários serão descritos ao longo deste documento.

2.1 ctdump – Programando os backups automáticos do c-tree Server O usuário deve fornecer o User ID, Senha, nome do arquivo Script de dump e o nome do Servidor para o utilitário ctdump, que programa o Dump dinâmico. A sintaxe é a seguinte:

ctdump [adminuser adminpass] dumpscript [servername]

adminuser: usuário do grupo ADMIN

adminpass: Senha do Administrador

dumpscript: Nome do script de Dump dinâmico no sistema do servidor. Um caminho (path) relativo ao sistema do Servidor pode ser incluído.

servername: Nome do servidor (opcional).

A seguinte linha representa um exemplo de utilização deste utilitário:

ctdump admin ADMIN meuscript.txt FAIRCOMS

O dump também pode ser programado diretamente no arquivo de configuração do c-tree Server (ctsrvr.cfg) com a palavra chave DUMP seguida do nome do arquivo script de dump. No exemplo acima, teriamos:

DUMP meuscript.txt

Arquivo Script de configuração do Dump dinâmico

O arquivo script de dump é um arquivo texto que especifica quando o dump deve ser realizado, a que intervalos repetir o processo, e quais os arquivos que devem ser incluídos no dump.

O arquivo script consiste de uma série de instruções, cada um dos quais é representado por uma palavra chave seguida por um espaço e um argumento (por exemplo, a palavra chave "!DAY" seguida por um argumento "WED"). Todas as palavras chave começam com um "!" e não são sensíveis ao caixa (isto é, !DAY = !Day). Argumentos são cadeias de letras, números e pontuação, no formato apresentado a seguir para cada palavra chave. Espaços e linhas novas dividem as palavras chave e os argumentos. Espaçamento e linhas em branco têm formato livre, mas é mais simples criar e alterar um script com cada par palavra chave/argumento em uma linha separada. No exemplo apresentado após a lista de palavras chave, esta regra não foi seguida totalmente, com a inclusão de 2 palavras chave na mesma linha apenas para exemplificar.

Configuração do Dump dinâmico

www.faircom.com All Rights Reserved 5

A ordem das palavras chave não importa, exceto por duas excessões:

A penúltima palavra chave do arquivo de configuração tem que ser necessariamente "!FILES", seguida por um argumento que representa uma lista dos arquivos a serem salvos (com cada nome de arquivo separado por pelo menos um espaço em branco ou uma linha nova), e

A última palavra chave no arquivo script tem que ser "!END", que não tem argumentos.

Opções de Dump Dinâmico

As palavras chave e argumentos disponíveis para definição de um dump dinâmico são as seguintes:

!BLOCK_RETURN

Faz com que ctdump espere até que o dump dinâmico tenha completado antes de retornar. Sem BLOCK_RETURN, ctdump returna tão logo o c-tree Server receba o pedido de dump. Ao esperar pelo término do processo, BLOCK_RETURN permite ao Administrador do Sistema determinar quando o dump foi completado. Desenvolvedores podem considerar útil informar ao Administrador do Sistema quando o backup foi concluído.

!DATE <mm/dd/yyyy>

Data para realizar o backup. Se a data já passou, o intervalo !FREQ é aplicado para determinar quando o próximo backup será realizado. Se nem !DATE nem !DAY for especificado, o valor “hoje” é assumido.

!DAY <dia da semana, em inglês>

Ao invés de uma data, um dia da semana pode ser usado para programar o dump. Eles devem ser especificados como SUN, MON, TUE, WED, THR, FRI ou SAT. Se nenhuma data (date), horário (time) ou dia da semana (day) for especificado, então o dump é programado para iniciar imediatamente.

!DELAY <seconds>

Número de segundos para espear até que as transações ativas sejam abortadas.

Se zero, o c-tree Server não irá abortar transações ativas. O dump espera indefinidamente até que todas as transações ativas tenham completado e nenhuma nova transação poderá se inicar durante esta espera.

Caso o valor delay seja maior que zero, o c-tree Server espera até que, ou o tempo (delay) tenha expirado, ou todas as transações ativas tenham completado. Durante este período de espera, novas transações não podem ser iniciadas. Ao se encerrar a espera (ou as transações que estavam ativas), o dump dinâmico tem início, e novas transações podem também ser iniciadas. Caso alguma transação não seja completada dentro do intervalo determinado por !DELAY, o c-tree Server aborta estas transações ainda em progresso, retornando ao aplicativo uma das seguintes mensagens de erro:

78 (TABN_ERR), indicando que a transação foi abandonada.

162 (SGON_ERR), um erro genérico, indicando uma quebra na comunicação entre o c-tree Server e o aplicativo.

!DUMP <dump file>

O nome do arquivo ou dispositivo no qual todos os arquivos de backup serão salvos

Configuração do Dump dinâmico

www.faircom.com All Rights Reserved 6

Nota: Se um arquivo com o mesmo nome já existir, ele será apagado no início do processo e o novo arquivo de dump substituirá o antigo arquivo.

Nota: Deve haver espaço suficiente para o arquivo de dump, que é limitado ao tamanho máximo de um arquivo no sistema operacional (2 GB em muitos sistemas). Caso não haja espaço suficiente, o dump irá falhar. Uma falha devido a espaço em disco insuficiente não irá corromper nada, mas espaço adicional deve ser alocado para que o backup possa ser realizado.

!END

Encerra as instruções no arquivo script. Coloque !END imediatamente após a palavra chave !FILES e sua lista de arquivos. !END não recebe nenhum argumento.

!ENDSEGMENT

Encerra a lista de segmentos quando se especificam tamanhos e localização individuais de segmentos.

!EXT_SIZE <bytes | NO>

Altera o valor de extensão padrão do segmento de 1GB ou desabilita com NO. Veja a seção o manual de Adminstração do c-tree Server para maiores detalhes.

!FILES <lista de arquivos>

A palavra chave !FILES é seguida pelos nomes dos arquivos a serem incluídos no dump dinâmico. Esta deve ser a penúltima palavra chave no arquivo de script. Nós recomendamos fortemente que FAIRCOM.FCS seja incluída na sua lista. Note que este arquivo contém os usuários e senhas do c-tree Server. Membros de um superfile não podem ser salvos individualmente. O superfile inteiro deve ser copiado; isto é, o nome do host do superfile, não de um membro do superfile, é colocado na lista de arquivos. Os sinais * e ? são suportados. Veja !RECURSE para outras opções.

!FREQ <horas>

Horas entre dumps sucessivos. Por exemplo, 24 para repetir o dump uma vez por dia, ou 168 para repetir o dump uma vez por semana.

!PROTECT e !PROTECT_LOW

A palavra chave !PROTECT, sem argumentos, adicionada a um script de dump dinâmico suspende atualizações a arquivos não-transacionados enquanto estes estão sendo copiados. Esta opção garante a integridade dos dados do arquivo. Não é garantido que os indices destes arquivos fiquem sincronizados com o arquivo de dados porque os arquivos não são copiados ao mesmo tempo. Com arquivos transacionados, os índices permanecem consistentes porque os registros de transações são utilizados para restaurar os arquivos ao mesmo momento, isto é, o tempo efetivo programado de dump. Na maioria das situações, é mais eficiente realizar o dump apenas do arquivo de dados e efetuar o rebuild para recriar os índices dos arquivos não transacionados.

A suspensão das atualizações é forçada apenas no nível ISAM (e superior) a menos que a palavra chave !PROTECT_LOW seja utilizada. !PROTECT e !PROTECT_LOW representam opções mutuamente exclusivas. Caso as duas estejam presentes no script, a última a ser declarada é utilizada.

Independente de !PROTECT ou !PROTECT_LOW serem utilizadas, atualizações de resources são suspensos no inicio de chamadas a AddResource, DeleteResource e UpdateResource.

Configuração do Dump dinâmico

www.faircom.com All Rights Reserved 7

!RECURSE <YES | NO | MATCH_SUBDIR>

Valor padrão é NO. Controla a recursão de diretórios ao se utilizar máscaras (wildcards). A palavra chave !RECURSE se aplica apenas ao processar uma entrada !FILES que contenha uma máscara. No caso de uso de MATCH_SUBDIR, além da necessidade do nome do arquivo concordar com a mascara, apenas nomes de diretórios que coincidam com a máscara serão considerados para recursão.

!SEGMENT

Veja mais detalhes no manual de Administração do c-tree Server.

!TIME <hh:mm:ss>

Hora do dia, em um relógio de 24 horas, em que o backup deve se iniciar. Se a hora já passou, então o intervalo !FREQ será usado para determinar a programação do próximo backup. Se um comando !DATE ou !DAY é especificado sem uma referência à hora (!TIME), então o valor padrão de 23:59:59 é adotado.

Se nem hora, nem dia, nem data forem especificados, o dump é iniciado imediatamente.

Script Exemplo

!TIME 23:00:00!day Sun

!Dump SYSTEM.BAK

!Delay 600

!FREQ 168

!FILES FAIRCOM.FCS

!END

Este script programa um dump semanal às 23:00 hs nas noites de domingo. O único arquivo incluido no dump é "FAIRCOM.FCS". O sistema irá esperar até 23:10 (isto é, espera de 600 segundos, após o horário programado de 23:00 hs) para que todas as transações ativas se completem e então ele irá abortar qualquer transação ainda ativa e iniciar o dump efetivamente. Os dados copiados serão salvos em um arquivo chamado SYSTEM.BAK.

Nota: O arquivo de configuração do c-tree Server também pode controlar a forma como transações tardias podem são abortadas. Em particular, veja a descrição da palavra chave PREIMG_DUMP.

Nota: O servidor abre o arquivo de script de dump dinâmico quando o dump é programado, lê seu conteúdo e então o fecha. No momento de execução do dump, o servidor abre o script novamente, lê seu conteúdo e então o fecha novamente antes de iniciar o procedimento de cópia dos arquivos.

Programando um Dump Dinâmico Usando o Script

Há duas formas de programar um dump dinâmico:

O arquivo de configuração do c-tree Server pode ser usado para programar dumps dinâmicos. No arquivo de configuração, a palavra chave DUMP é seguida pelo nome do arquivo script definindo o dump.

Utilize o utilitário de dump dinâmico, ctdump, que é um utilitário específico para que ser utilizado pelo Administrador enquanto o servidor está ativo.

Para usar o utilitário ctdump para programar um Dump dinâmico, use o seguinte procedimento:

1. Com o c-tree Server operacional, inicie o utilitário ctdump como qualquer outro programa no ambiente.

Configuração do Dump dinâmico

www.faircom.com All Rights Reserved 8

2. Entre com a senha para ADMIN.

3. Entre com o nome do c-tree Server, caso o servidor tenha recebido um nome diferente do padrão (FAIRCOMS). Veja a Seção 6.3 “Basic Configuration Options”, do manual de Administração do c-tree Server para mais informações sobre a palavra chave SERVER_NAME.

4. Entre com o nome do arquivo script de Dump dinâmico.

O c-tree Server confirma que programou o Dump dinâmico solicitado.

Arquivos espelhados (Mirrored) podem ser “backupeados” durante o dump dinâmico e sua restauração deve seguir conforme indicado a seguir:

Se um arquivo espelhado deve ser aberto para uso por um aplicativo durante o dump dinâmico, o script de dump deve conter o nome "espelhado", isto é, o nome com a barra vertical ('|'). Por exemplo, sales.dat|msales.dat.

Se isto não for feito, e o dump dinâmico abre o arquivo primário, uma vez que ele não esteja em uso, um cliente que abra a combinação primário|espelhado receberá o erro MNOT_ERR (arquivo já está aberto, mas sem espelhamento). Para evitar que os usuários sejam bloqueados ao tentar acesso ao arquivo, abra arquivos primários com seu espelhamento quando definidos para operação de dump dinâmico.

O programa de restauro de dump recria tanto o arquivo primário quanto o espelhado. Ele produz o arquivo primário, e o copia sobre o arquivo espelhado.

Uma vez que um dump dinâmico tenha se completado, os arquivos podem ser usados para restauro do dump e/ou operações de Rollback.

Desprogramando (ou encerrando) um Dump dinâmico

Para encerrar um dump dinâmico programado, execute o utilitário ctadmn e liste os clientes ativos. O dump dinâmico irá aparecer com o “COMM PROTOCOL” indicando “DYNAMIC DUMP”. Você pode utilizar a opção “kill clients” para encerrar o processo. Isto permite que um procedimento de backup seja cancelado (killed) após ter sido submetido ao c-tree Server.

2.2 ctrdmp – Restaurando backups do c-tree Server Caso ocorra uma falha catastrófica no sistema, a primeira operação esperada do c-tree Server ao ser reiniciado é que realize a recuperação automática dos arquivos TRNLOG. Caso ocorra algum problema com os arquivos de registros (*.FCS) ou com os arquivos de dados propriamente ditos, ou ainda por alguma outra razão que torne impossível a realização da recuperação automática, será necessário utilizar os dados de um dump dinâmico ou de um backup completo para restaurar o sistema a um estado consistente e bem definido. Este processo é conhecido como recuperação de um dump dinâmico.

Nota: Se você realiza seu próprio backup do sistema quando o c-tree Server não está em operação e inclui o arquivo FAIRCOM.FCS, você pode restaurar a partir deste backup no evento de uma falha catastrófica.

Recuperação de arquivos TRNLOG utilizando recuperação automática

Caso o c-tree Server seja desligado de forma anormal, arquivos TRNLOG podem ser restaurados a um estado transacional consistente simplesmente reiniciando-se o servidor. O c-tree Server verifica que houve um desligamento impróprio e realiza a recuperação automática, aplicando as mudanças apropriadas para os arquivos TRNLOG, baseado na atividade gravada nos arquivos de registro.

Configuração do Dump dinâmico

www.faircom.com All Rights Reserved 9

Se por alguma razão a recuperação automática não consegue finalizar corretamente, arquivos TRNLOG podem se encontrar em um estado inconsistente. Backups periódicos de arquivos de dados e índices TRNLOG podem ajudar a minimizar os problemas decorrentes de tais situações.

Arquivos PREIMG e não transacionados não contam com o benefício de recuperação automática, assim, caso ocorra uma falha grave, eles devem ser recuperados ou restaurados a partir de um backup. As seções seguintes discutem opções de restauração de dados.

Nota Microsiga: o Protheus, ao menos até sua versão comercial de Abril de 2008, utiliza uma série de arquivos temporários que são transacionados (TRNLOG). Durante o processamento normal do Protheus, alguns destes arquivos podem ser removidos. Porém, antes que estes tenham sido removidos, algumas atualizações podem ter sido registradas nos logs do c-tree Server. Quando o c-tree Server tenta realizar a recuperação automática e desfazer/refazer alguma transação nestes arquivos que foram removidos, ele encontra um erro e interrompe a recuperação automática. Neste caso, a seguinte mensagem será impressa no arquivo CTSTATUS.FCS:

*** Recovery may proceed by adding 'SKIP_MISSING_FILES YES' ***

*** to the server configuration file. ***

Para evitar este comportamento, a palavra chave “SKIP_MISSING_FILES YES” deve ser incluída no arquivo de configuração do c-tree Server. Note porém que o c-tree Server não terá, neste caso, como determinar se o arquivo que não foi encontrada era temporário ou não. O arquivo padrão sugerido pela Microsiga inclui esta palavra chave.

2.3 Recuperação do Dump Dinâmico As seções a seguir discutem tópicos específicos sobre a recuperação ou restauro do dump.

Palavras Chave adicionais para Script de Recuperação

Um script de recuperação de Dump é usado com o utilitário de restauração. Este script pode ser o mesmo usado para criar o Dump dinâmico. As palavras chave a seguir, com argumentos no mesmo formato discutido acima, controlam o processo de recuperação sem causar nenhum efeito no dump em si (em outras palavras, não irão interferir no processo de dump caso estejam presentes ao se realizar o backup):

!COMMENT padrão: Não está presente

Informa ao c-tree Server que o restante do arquivo script serve apenas para efeito de documentação e não deve ser levado em conta no processamento da operação. Palavras chave colocadas após !COMMENT não serão consideradas. Desta forma, deve ser colocada após a palavra chave !END.

!DELETE padrão: !SKIP

O oposto de !SKIP. Faz com que arquivos existentes no diretório de destino da restauração sejam substituidos pelos arquivos contidos no dump.

!#FCB <number of files> padrão: 100 arquivos

O número desejado de blocos de controle de arquivos. Deve ser superior ao número de arquivos (dados + índice) sendo copiados. Note-se que superfiles contam como 2 FCB’s + 1 para cada membro de dados + 1 para cada índice.

Configuração do Dump dinâmico

www.faircom.com All Rights Reserved 10

Nota Microsiga: Caso o usuário realize o dump de todos os arquivos de dados e índices, o total de arquivos (em particular os sx* e six*) superam em muito este total padrão. Um valor razoável pode ser da ordem de 3000 para !#FCB, dependendo de sua instalação e arquivos selecionados para o dump. Uma forma de verificar o número de “blocos de controle de arquivos” em uso pelo c-tree durante operação normal é utilizando o utilitário ctadmn na opção “Server Configuration”. Verifique, durante operação normal do sistema, o número de “c-tree Plus file control blocks in use” (conforme abaixo) e utilize um número significativamente maior ao apresentado em seu script. Considere, entretanto, que durante a operação, cada índice estará contando como um bloco de controle, e eventualmente no seu sistema você poderá efetuar o backup apenas dos dados (.dtc) e permitir que o Protheus faça a reconstrução dos índices automaticamente.

c-tree Plus files opened by system = 15

physical c-tree Plus files open = 6

c-tree Plus file control blocks in use = 18

!FORWARD_ROLL padrão: Roll forward não é realizado

Se você planeja realizar um roll forward após a restauração do dump, esta palavra chave tem que ser incluída no script de recuperação. A palavra chave é ignorada durante a realização do dump dinâmico (backup). Quando a palavra chave encontra-se presente durante o restauro do dump, ela faz com que arquivos de registros de transações sejam restaurados com a extensão de arquivamenteo (isto é, S*.FCA). Certifique-se de renomear os arquivos de S*.FCA para S*.FCS antes de iniciar o forward roll. Veja a seção “Running the Forward Dump Utility for System Recovery” do Manual de Administração do c-tree Server para mais informações a este respeito.

!PAGE_SIZE <bytes por buffer> padrão: 8192 bytes

O número de bytes por página de buffer, arredondado (para baixo) para um múltiplo de 128.

Nota: necessário apenas se o arquivo de configuração do c-tree Server altera o valor padrão de “page size”, o que tipicamente não é o caso com o Protheus.

!REDIRECT <caminho antigo > <caminho novo> padrão: nenhum redirecionamento.

Redireciona os arquivos sendo restaurados do caminho (path) antigo para o novo caminho. Deve-se respeitar a grafia (maiúsculas/minúsculas) ao se preparar o redirecionamento. O utilitário ctidmp pode ser utilizado para fazer uma verificação dos arquivos salvos no dump e se confirmar a grafia do path dos arquivos. Veja a seção “Define Alternative Restore Destinations” do Manual de Administração do c-tree Server para mais informações a este respeito.

!SKIP padrão: !SKIP

Não restaure nenhum arquivo listado na palavra chave !FILES se o mesmo já existir no destino. Oposto de !Delete.

Nota: Há diferenças importantes entre o uso de !SKIP com um restauro e com um rollback (veja a discussão a respeito na seção “System Rollback” no manual de Administração do c-tree Server). No caso de um rollback, não há como se confirmar a consistência do resultado final se !SKIP for utilizado.

Nota: Apenas os arquivos especificados pela palavra chave !FILES constantes no script de recuperação serão restaurados. Não é necessário se restaurar todos os arquivos contidos em um dump.

Configuração do Dump dinâmico

www.faircom.com All Rights Reserved 11

Executando o utilitário de Restauração (ctrdmp)

O utilitário ctrdmp realiza a restauração de um dump dinâmico. ctrdmp é na verdade uma versão customizada do c-tree Server, assim, há alguns pontos importantes a ter em mente ao executá-lo:

1. Certifiquese de que o c-tree Server que está sendo restaurado não esteja executando quando ctrdmp inicia, uma vez que dois c-tree Servers operando simultaneamente interferem um com o outro. Como sugestão, ctrdmp deve ou ser executado em uma máquina separada, ou os arquivos devem ser redirecionados para um diretório diferente do diretório de trabalho.

2. Como trata-se de um c-tree Server, ctrdmp gera versões temporárias de todos os arquivos de sistema associados com um c-tree Server (isto é, arquivos com a extensão "FCS"). Portanto, o utilitário ctrdmp deve ser executados a partir de um diretório diferente do diretório de trabalho onde o c-tree Server reside. Assim, os arquivos de sistema criados pelo programa de restauração não sobreescrevem os arquivos de trabalho do c-tree Server. Os arquivos temporários são automaticamente apagados quando o processo de restauração completa com sucesso, a menos que !FORWARD_ROLL esteja no script de recuperação. Neste caso, os arquivos S*.FCS serão renomeados para S*.FCA e mantidos no diretório.

Após adotar estes cuidados preliminares, siga os seguintes passos para restaurar de um dump dinâmico:

1. Inicie ctrdmp da mesma forma que qualquer programa normal no ambiente.

2. Quando solicitado, entre com o nome do arquivo script de dump dinâmico a ser usado para a recuperação.

Nota: O mesmo arquivo script usado para realizar o dump pode ser usado para restaurar o dump. Caso um rollforward esteja nos planos, inclua a palavra chave !FORWARD_ROLL. Note que, embora o mesmo script possa ser utilizado, isto indica que um script diferente também pode ser utilizado. Por exemplo, você pode alterar o script para restaurar apenas parte dos arquivos originalmente salvos.

O restauro do dump inicia automaticamente e produz uma série de mensagens informando o progresso da recuperação.

1. Cada arquivo restaurado será listado à medida que seja finalizado.

2. Ao final do processo de restauração de todos os arquivos especificados, uma mensagem é apresentada indicando que os registros de recuperação (isto é, os “transaction logs” ou “recovery logs”) foram verificados e os arquivos recuperados foram restaurados ao estado em em que se encontravam no instante em que o dump dinâmico foi iniciado.

3. Uma mensagem indica que o processo de recuperação do dump foi encerrado com sucesso.

Definindo Destinos Alternativos de Recuperação

Por padrão, a restauração do dump dinâmico retorna os arquivos aos seus diretórios originais. Há uma forma conveniente de "redirecionar" o destino dos dados durante a restauração do dump dinâmico. Desenvolvedores podem obter uma “foto” (“snapshot”) da base de dados de um cliente e restaurá-la a um destino alternativo para testes ou outros propósitos.

O script de dump dinâmico usado durante a restauração pode conter uma ou mais das seguintes diretivas de redirecionamento:

!REDIRECT <caminho antigo > <caminho novo>

Nota: Para especificar uma cadeia vazia para um dos argumentos de !REDIRECT, utilize um par de aspas duplas ("").

Configuração do Dump dinâmico

www.faircom.com All Rights Reserved 12

Exemplos:

As seguintes diretivas fazem com que arquivos que foram copiados usando um nome absoluto sejam restaurados em um diretório temporário (relativo ao diretório corrente durante a restauração) e arquivos que foram copiados do diretório local (relativo ao diretório de trabalho do Servidor) sejam restaurados em um diretório absoluto \temp\local:

!REDIRECT \ temp\

!REDIRECT local \ \temp\local\

A diretiva abaixo irá adicionar temp\ a todos os arquivos restaurados:

!REDIRECT " " temp\

A próxima diretiva irá remover “d:” de qualquer arquivo restaurado iniciando com d: (ou D:):

!REDIRECT d: ""

Nota: A palavra chave !REDIRECT afeta apenas a operação de restauro e é ignorada quando o script é usado para realizar o processo de backup.

2.4 ctfdmp – Avançando o Backup no tempo (Rollforward) O utilitário de forward dump, ctfdmp, pode ser utilizado para recuperar de uma falha catastrófica seguindo a execução de um dump dinâmico ou um backup offline, e em seguida posicionar os registros em um momento “futuro” em relação ao momento do backup.

Para se preparar para utilizar o utilitário ctfdmp, siga os seguintes passos:

1. Inclua a opção de configuração KEEP_LOGS no arquivo de configuração do c-tree Server. Esta configuração faz com que o servidor mantenha todos os arquivos de registro. Note que por default, o c-tree Server mantém apenas os 4 registros de transações mais recentes, apagando o quinto mais antigo ao criar um novo. Com a palavra chave KEEP_LOGS, o c-tree Server irá renomear este arquivo que seria apagado como “inativo” (extensão .FCA, em substituição a FCS). A única utilidade deste arquivo é em eventuais operações do tipo “rollforward”.

2. Realize dumps dinâmicos ou backups offline periódicos. Os seguintes arquivos devem ser incluídos em um backup completo:

• Os arquivos de dados e índices que se deseja salvar.

• O arquivo FAIRCOM.FCS

• Os arquivos S*.FCS (incluídos automaticamente no dump dinâmico).

3. Após um backup completo, salve todos os arquivos de registro de transações criados até o próximo backup completo. Arquivos de transação ativos têm nomes do tipo L<número de registro>.FCS, com o número sendo incrementado por 1 para cada novo registro de transações. Como especificado na chave de configuração KEEP_LOGS, quando o c-tree Server cria um novo arquivo de registro, ele renomeia o arquivo de registro antigo sendo substituído de "L<número de registro>.FCS" para "L<número de registro>.FCA" e salva o mesmo como um arquivo de registro de transações inativo.

Se o sistema sofre uma falha catastrófica e os preparativos foram realizados conforme mencionado, os dados podem ser recuperados da seguinte forma:

1. Restaure o conteúdo do backup mais recente, que pode ser um dump dinâmico ou um backup padrão (offline), desde que ele inclua todos os arquivos listados no passo 2 acima.

Configuração do Dump dinâmico

www.faircom.com All Rights Reserved 13

Nota: Se a restauração for de um dump dinâmico, certifique-se de incluir a palavra chave !FORWARD_ROLL no script de recuperação de dump. Esta palavra chave faz com que um arquivo específico de início de transações seja criado para os registros recuperados. Este arquivo será denominado S*.FCA. Ao término da restauração, renomeie a extensão deste arquivo para FCS.

2. Carregue todos os arquivos de registro de transações salvos entre o momento da realização do backup e o momento da falha catastrófica, e renomeie todos os arquivos inativos neste grupo (isto é, arquivos com a extensão “FCA”), fornecendo a eles uma extensão de arquivos de registro ativos (isto é, arquivos com a extensão “FCS”).

3. Inicie o utilitário de forward dump, ctfdmp, como qualquer outro programa no ambiente. O forward dump irá realizar as operações sem a necessidade de nenhuma outra instrução.

Nota: Apenas arquivos transacionados serão atualizados além do estado que tinham quando o backup foi realizado.

Para uma descrição mais detalhada sobre como utilizar o utilitário ctfdmp (e outros pontos sobre rollforward), incluindo argumentos de linha de comando, veja o c-tree Server Administrator's Guide.

2.4.1 Rolling Back do Backup

Rollback do sistema restaura o sistema a seu status conforme especificado em um determinado momento. Por exemplo, se o processamento da folha de pagamentos de uma empresa se inicia às 13 hs, e alguma coisa de errado ocorre durante a tarde, um rollback do sistema pode restaurá-lo ao seu estado das 13 hs, e o procedimento pode ser reiniciado. Caso outros usuários estivessem utilizando outros arquivos transacionados durante a tarde, estes arquivos também serão restaurados ao seu status de 13 hs. O administrador deve estar informado de todos os arquivos e dados que serão afetados antes de iniciar o processo de rollback para evitar a interferência com múltiplos e não relacionados sistemas que estejam compartilhando o c-tree Server.

A execução de um rollback envolve a execução do utilitário ctrdmp, com a utilização de um dump dinâmico com arquivo script contendo palavras chave descrevendo como o rollback deve ser processado. Se a primeira linha do arquivo de configuração é !ROLLBACK, o arquivo script é utilizado para o processo de rollback. Caso contrário, o script é c considerado um script de dump dinâmico e é utilizado para a recuperação de um dump.

Aviso: Da mesma forma que na recuperação de um dump, certifique-se de que ctrdmp seja executado em um diretório diferente do utilizado para gravação dos arquivos de registro do servidor, e que os arquivos a serem restaurados não estejam em utilização.

www.faircom.com All Rights Reserved 14

Chapter 3

3. Reconstruindo Índices e Compactando arquivos de dados

Dependendo de como sejam as opções utilizadas na criação dos índices de arquivos c-tree, uma falha catastrófica pode levar a que os índices tenham que ser reconstruídos (rebuild), e suas chaves obtidas a partir do arquivo de dados. Como índices TRNLOG são usualmente recuperados automaticamente pelo servidor, eles geralmente não necessitam ser reconstruídos, a não ser que fiquem danificados no processo catastrófico. Índices PREIMG e não transacionados requerem o rebuild após a falha catastrófica porque quaisquer atualizações que estivessem em cache (e que não tenham sido escritas em disco até o momento da falha), estarão perdidas, e os arquivos de dados e índices poderão ter perdido sua sincronia.

Uma tentativa de abertura de arquivo que falha com erro FCRP_ERR (14) indica que o update flag do arquivo está ativado, o que indica que o mesmo foi atualizado, mas não foi fechado corretamente e pode estar desatualizado ou fora de sincronismo com o arquivo de dados. Nesta situação, o arquivo pode ser restaurado a um estado correto com a reconstrução dos índices.

Nota Microsiga: O Protheus realiza esta operação automaticamente.

O objetivo principal de um rebuild é corrigir erros que ocorreram com arquivos de índices. Quando ocorrem problemas com os arquivos de dados (por exemplo, devido a uma falha catastrófica que danifica o arquivo de dados), o mais indicado é a criação de uma nova cópia do arquivo de dados contendo os registros ativos que podem ser recuperados do arquivo danificado. Isto pode ser realizado através da compactação dos dados.

Nota Microsiga: Este procedimento também é realizado pela Microsiga com o objetivo de remover registros apagados pelo usuário do sistema. Note um ponto importante: o c-tree automaticamente aproveita o espaço dos registros que são apagados do sistema. A função “pack” do AdvPl percorre a tabela e apaga fisicamente os registros marcados como “apagados” pelo usuário. Em seguida, a função realiza a compactação do arquivo. A função “zap” apaga todos os registros da tabela. Note que a criação de uma tabela vazia seria muitas vezes mais eficiente que esta chamada a “zap”.

Como esta operação de compactação produz um novo arquivo, durante o processo deve haver disponível em disco o dobro de espaço que o tamanho do arquivo a ser compactado. O processo de compactação realiza o rebuild dos índices automaticamente ao seu final.

Checklist de recuperação do c-tree Server

Os passos recomendados para que o procedimento de recuperação possa ser executado no evento de uma falha catastrófica são os seguintes:

Planejar procedimentos para o caso de o servidor terminar de forma anormal. Estar apto a realizar a recuperação automática de arquivos TRNLOG e restaurar os arquivos PREIMG e não transacionados através da recuperação do backup ou reconstrução dos arquivos.

Planejar para situações em que a recuperação automática falhe. Estar apto a recriar arquivos TRNLOG ou restaurar estes arquivos de backups se necessário.

Reconstruindo Índices e Compactando arquivos de dados

www.faircom.com All Rights Reserved 15

Verificar o estado dos arquivos PREIMG e não-transacionados, abrindo estes arquivos para verificar se há algum problema.

Realizar o rebuild dos arquivos se necessário (ctrbldif pode ser utilizado com este objetivo).

Compactar os arquivos se necessário (ctcmpcif pode ser utilizado com este objetivo).

www.faircom.com All Rights Reserved 16

Chapter 4

4. Outras opções de Backup

Além do backup online, conhecido como dump dinâmico, pode-se realizar um backup offline com o c-tree Server, conforme descrito a seguir.

Nota: a cópia pura e simples dos arquivos controlados pelo c-tree Server enquanto o c-tree Server está operacional e com os arquivos abertos não representará um backup do sistema porque o c-tree Server mantém dados em cache durante sua operação, e os arquivos de log podem estar sendo alterados durante a cópia. Além disso, os arquivos que tenham sido alterados estarão com uma flag ativa indicando que foram alterados. A tentativa de abrir um arquivo com tal flag ativa resultará no erro FCRP_ERR (14) indicando que o arquivo está corrompido.

Opções de Backup Offline

Um backup offline é um backup realizado com a interrupção do uso de algum ou todos os dados do c-tree Server. Um backup offline pode envolver a parada do servidor, ou o controle de acesso aos arquivos enquanto os mesmos são gravados. O ponto importante a se notar é que o backup offline envolve tipicamente uma operação de cópia de arquivos, e assim, os arquivos a ser copiados têm que estar fechados antes do início do processo, para garantir que todos os dados em cache foram escritos no disco. Como os arquivos estão fechados quando copiados, esta técnica funciona bem para arquivos TRNLOG, PREIMG e não transacionados, sem perda de consistência transacional para os arquivos TRNLOG e PREIMG.

Os passos gerais para realizar o backup offline são os seguintes:

1. Fechar os arquivos a serem copiados.

2. Proibir o acesso aos arquivos sendo copiados.

3. Efetuar o backup dos arquivos utilizando um utilitário de cópia de arquivos do sistema.

4. Liberar o acesso aos arquivos.

As seções seguintes discutem dois métodos de backup offline e como estes passos são realizados em cada caso.

Backup Offline com o servidor desligado

Em algumas circunstâncias, o sistema é projetado de tal forma que permite que o c-tree Server seja desligado para a realização do backup. Por exemplo, pode ser que o sistema fique indisponível em períodos regulares (não opera à noite, por exemplo). Em tais situações, arquivos c-tree podem ser gravados desligando-se o servidor e copiando-se os arquivos de dados e índices com utilitários de backup.

Este é o mais simples dos dois métodos de backup offline. Desligar o servidor garante que os arquivos a serem gravados estejam fechados (passo 1 mencionado acima) e garante que os mesmos não serão abertos durante o processo (passo 2). Após o término do processo (passo 3), religar o servidor garante um novo acesso aos arquivos (passo 4).

Outras opções de Backup

www.faircom.com All Rights Reserved 17

Backup Offline com o servidor operacional

Outra forma de realizar o backup offline é garantir que os arquivos a ser gravados estejam inacessíveis aos usuários, enquanto o servidor permanece operando. Esta opção de backup é apropriada para arquivos que podem ser fechados e gravados sem afetar a disponibilidade do sistema. Por exemplo, efetuar o backup dos arquivos que são utilizados apenas por um departamento, enquanto o mesmo não está em operação, ou no caso de se trabalhar com arquivos particionados, sendo que algumas das partições podem ser removidas para backup. Outra possibilidade é que o aplicativo mantenha manualmente conjuntos de arquivos de tal forma que alguns arquivos possam ser fechados e gravados periodicamente.

Este tipo de backup offline requer que o aplicativo tenha condições de controlar o acesso dos clientes aos arquivos que serão gravados. Enquanto o servidor continua operacional, os arquivos a serem copiados têm que estar fechados (passo 1), não podem ser abertos durante o processo (passo 2), e após o término do processo, os arquivos devem ser disponibilizados novamente (passo 4).

Para implementar estes passos, os sistemas devem ser projetados de tal forma que os clientes periodicamente fecham os arquivos para propósitos de backup, ou o c-tree Server pode ser utilizado para controlar o acesso aos arquivos. O c tree Server fornece a possibilidade de controlar o acesso através da função Security. Quatro modos possibilitam que o usuário ADMIN bloqueie o acesso temporariamente ao servidor de outros usuários, além de controlar algumas threads internas do servidor como apresentado na seguinte tabela:

Modo Descrição

SEC_BLOCK_NONADM Bloqueia o logon de usuários que não sejam do grupo ADMIN

SEC_BLOCK_NONSUP Bloqueia o logon de todos os usuários, exceto ADMIN

SEC_BLOCK_KILL Bloqueia logon de todos os usuários, exceto ADMIN, e cancela (kill) todos os demais usuários (suspende o servidor)

SEC_BLOCK_OFF Desativa o bloqueio

SEC_BLOCK_NONADM e SEC_BLOCK_NONSUP podem ser utilizadas para bloquear tentativas de logon por parte dos clientes. Estas opções não afetam as conexões dos clientes ativos, mas proíbe novas conexões com o servidor.

SEC_BLOCK_KILL pode ser utilizada para suspender efetivamente o servidor. Esta opção bloqueia todos os logins, exceto a partir da conta do super usuário, ADMIN e encerra todas as conexões clientes ativas, fazendo com que o servidor feche todos os arquivos abertos e suspenda as threads internas. Esta opção suspende o uso do c-tree Server até que uma chamada a Security com SEC_BLOCK_OFF seja realizada.

Um sistema pode desejar limitar o acesso a apenas alguns arquivos, ao invés de suspender a operação do servidor conforme descrito acima. Em tais situações, o aplicativo tem que implementar seu conjunto próprio de sinalização para que os clientes fechem os arquivos e notificá-los novamente quando puderem reabri-los. Além disso, o aplicativo tem que garantir que as threads internas não tenham acesso aos arquivos, enquanto estes estão sendo gravados. O utilitário ctmove pode ser utilizado para mover ou renomear arquivos para garantir que as threads internas não modifiquem os arquivos durante sua gravação. O procedimento de backup nesta situação é o seguinte:

1. Sinalizar para que os clientes fechem os arquivos a serem gravados

2. Renomear ou mover os arquivos com o utilitário ctmove.

3. Gravar os arquivos com um utilitário de cópia do sistema.

4. Sinalizar para os clientes reabrirem os arquivos.

Outras opções de Backup

www.faircom.com All Rights Reserved 18

Nota Microsiga: Por hora, este procedimento não é indicado, pois o Protheus realiza o acesso ao c-tree Server com todos os usuários utilizando a conta do super-usuário, ADMIN.

Restaurando de Backup Offline

Um backup offline envolve a gravação dos arquivos enquanto estes encontram-se fechados. Arquivos gravados desta forma encontram-se em um estado correto e podem ser restaurados simplesmente realizando-se uma cópia do backup para os diretórios apropriados. Caso esteja-se sobre-escrevendo arquivos existents, certifique-se de que os arquivos sendo sobre-escritos estejam fechados antes de iniciar o processo. Ao término da cópia, os arquivos estão prontos para uso.

Online Disk Snapshot

Sistemas que têm suporte a online disk snapshot fornecem uma forma de realizar o backup de arquivos TRNLOG transparentemente, enquanto os mesmos encontram-se em uso. Para restaurar arquivos de um online disk snapshot, os arquivos têm que ser restaurados a um estado transacional consistente utilizando-se a recuperação automática do c-tree Server.

Para realizar a recuperação automática em um online disk snapshot, faça com que os arquivos se tornem disponíveis para o sistema (montando um driver ou copiando arquivos do meio de backup para um drive do sistema). Se o aplicativo utiliza caminhos (paths) completos ao abrir os arquivos de dados e índices, os arquivos têm que ser colocados no mesmo diretório como em um sistema de produção, para garantir que a recuperação automática abra corretamente os arquivos.

Inicie o c-tree Server utilizando as mesmas opções de configuração utilizadas no sistema em produção. O servidor realizará a recuperação automática e anotará a finalização da mesma no arquivo CTSTATUS.FCS. Ao término deste processo, os arquivos estão prontos para uso.

A decisão sobre quando realizar uma recuperação automática nos arquivos depende da carga do sistema e disponibilidade de recursos. Uma possibilidade é realizar a recuperação automática nos arquivos tão logo o backup seja realizado, assim os arquivos ficam prontos para uso assim que for necessário. Esta alternativa tem a vantagem de minimizar o tempo a ser gasto para restaurar o sistema após um erro catastrófico, porque o processo de recuperação foi concluído a priori. Outra possibilidade é esperar até que se torne necessária a utilização dos arquivos para realizar a recuperação automática.

www.faircom.com All Rights Reserved 19

Chapter 5

5. Resolução de problemas específicos de Dump dinâmico com o c-tree Server

Dump Dinâmico Não Pode ser Agendado

Se a configuração do servidor inclui a palavra chave DUMP, o servidor abre o arquivo script de dump dinâmico e tenta programar o dump dinâmico. Se o dump não pode ser agendado (por exemplo, devido a um arquivo de dump ausente, ou um arquivo de dump incorreto ou com palavras chaves irreconhecíveis), o servidor registra mensagens de erro em CTSTATUS.FCS e desliga. Abaixo temos um exemplo de erros registrados em CTSTATUS.FCS quando o dump dinâmico não pode ser agendado na inicialização porque o arquivo script não existe:

Thu Sep 25 16:48:43 2003

- User# 01 DD: could not open script file...: 12

Thu Sep 25 16:48:43 2003

- User# 01 my.scr: 12

Thu Sep 25 16:48:43 2003

- User# 01 Could not schedule Dump dinâmico...: 5

Thu Sep 25 16:48:43 2003

- User# 01 my.scr: 5

Para solucionar este tipo de falha, verifique os erros registrados em CTSTATUS.FCS para entender a causa específica da falha. Corrija o problema que a causou e reinicie o servidor.

Número de Arquivos Ativos de Registro de Transações Cresce Inesperadamente

O número de arquivos ativos de registro de transações necessário para suportar a operação do c-tree Server é normalmente 4. Cada vez que o servidor cria um novo arquivo de registro, ele determina se precisa ou não apagar o arquivo mais antigo de registro (ou torná-lo inativo, se a palavra chave KEEP_LOGS foi incluída na configuração do servidor). Diversas condições podem fazer com que o servidor mantenha mais que 4 arquivos de registro. É importante para o administrador do servidor verificar casos em que o número de arquivos ativos cresce de forma significativa e entender a causa e se uma ação se faz necessária.

Quando o número de arquivos de registro está prestes a crescer, a seguinte mensagem é gravada em CTSTATUS.FCS:

The number of active log files increased to <nlogs>

onde <nlogs> é o novo número de arquivos de registro.

As situações mais importantes em que a manutenção dos arquivos mais antigos como ativos se fazem necessárias são:

Aumentar CHECKPOINT_FLUSH para retardar o flushing dos buffers associados com as transações committed:

Ao criar um novo registro de transações, o c-tree Server determina a vulnerabilidade da recuperação devido aos buffers não flushed associados com transações commited e mantém o número necessário de arquivos de registros ativos. A seguinte fórmula pode ser usada para estimar o número de arquivos de registro necessários para suportar páginas não flushed de buffer e cache baseadas na configuração do servidor:

Resolução de problemas específicos de Dump dinâmico com o c-tree Server

www.faircom.com All Rights Reserved 20

Sejam:

CPF = valor de CHECKPOINT_FLUSH (default 2)

CPL = número de checkpoints por registro (tipicamente 3 e não menos que 3)

MNL = número mínimo de registros para atender às páginas não fluhed

Então:

MNL = ((CPF + CPL - 1) / CPL) + 2, onde uma divisão de inteiros é utilizada.

Por exemplo:

CPF=2, CPL=3 => MNL = 3 (Mas o servidor requer pelo menos 4)

CPF=7, CPL=3 => MNL = 5

CPF=9, CPL=3 => MNL = 5

CPF=10, CPL=3 => MNL = 6

Uma transação pendente que começou há muitos registros atrás e ainda não foi committed ou abortada:

Diferentemente de CHECKPOINT_FLUSH, que leva a um limite bem-definido no crescimento dos arquivos de registro de transações, uma transação que não seja commited pode levar a um crescimento ilimitado nos arquivos de registro de transações. Por exemplo, se um cliente inicia uma transação e então deixa seu terminal enquanto outros clientes executam transações, as transações dos demais clientes podem ser suficientes para encher os arquivos de registro. Quando o servidor cria novos arquivos de registro ele verifica que a transação do cliente inicial ainda não foi commited. O servidor tem que manter o registro em que a transação deste cliente se iniciou até que a mesma seja commited ou abortada. Por esta razão, é importante monitorar o número de arquivos de registro de transações ativos. Caso ocorra o crescimento inesperado de longas transações, o utilitário ctadmn pode ser usado para listar os clientes conectados e o tempo de suas transações e encerrar as conexões se necessário.

Dumps Dinâmicos:

Um dump dinâmico é semelhante ao caso de longas transações pendentes acima. O dump dinâmico tem que manter todos os registros de transações desde o início até o final do dump para incluir no arquivo de strem do dump toda a atividade transacional que ocorreu durante o processo. Se arquivos muito grandes forem incluídos no processo de dump, o dump dinâmico pode levar um tempo considerável. Dependendo da quantidade de transações entre o início e término do processo de dump, o número de arquivos de registros ativos que devem ser mantidos durante o processo pode ser grande.

O c-tree Server registra no arquivo CTSTATUS.FCS uma explicação sobre as condições que levaram ao crescimento do número de arquivos ativos. Quando o crescimento é devido a uma transação pendente, o servidor procura identificar o usuário e o nó associado com a transação.

Baseado na causa do aumento no número de arquivos de registro ativos mostrado em CTSTATUS.FCS, o administrador do servidor pode tomar as ações apropriadas, se for o caso. Por exemplo, uma transação pendente há muito tempo pode ser abortada utilizando-se o utilitário ctadmn e encerrando-se a conexão do cliente que iniciou a transação, ou um dump dinâmico pode ser terminado também com este utilitário.

Falha no Dump dinâmico

Uma operação de backup do tipo dump dinâmico pode falhar por algumas razões. A seguir, temos algumas das possíveis causas para falha no processo de dump dinâmico:

O arquivo de script do dump não existe ou encontra-se inacessível.

O script de dump contém opções inválidas.

Um ou mais arquivos especificados na lista de arquivos de dump não pode ser aberto.

Ocorre um erro ao se escrever no arquivo stream de dump (Por exemplo, fim de espaço disponível em disco, ou caminho (path) inválido).

Resolução de problemas específicos de Dump dinâmico com o c-tree Server

www.faircom.com All Rights Reserved 21

O c-tree Server registra mensagens e códigos de erro relativos ao dump dinâmico ao arquivo de registro de status, CTSTATUS.FCS. Caso um dump dinâmico falhe, examine o arquivo de registro de status.

O c-tree Server pode ser configurado para registrar mais detalhes do progresso do dump dinâmico no arquivo de registro de status, incluindo um registro para cada arquivo incluído no dump, adicionando-se a palavra chave DIAGNOSTICS DYNDUMP_LOG ao arquivo de configuração do servidor (CTSRVR.CFG), antes de se iniciar o mesmo.

Falha na Restauração do Dump dinâmico

A restauração de arquivos de um dump dynamic pode falhar por várias razões. Alguns exemplos incluem:

O arquivo script de restauração do dump não foi localizado.

O arquivo de recuperação do dump contém opções inválidas ou opções inconsistentes com os ajustes do c-tree Server.

Ocorre um erro quando a restauração do dump tenta restaurar arquivos para o momento do dump.

A restauração do dump é realizada em um diretório com arquivos que interferem com o procedimento de restauração (tais como registros de transação).

Quando uma operação de restauro de dump falha, o utilitário ctrdmp registra mensagens de erro no arquivo CTSTATUS.FCS. Verifique este arquivo e procure um código de erro c-tree que possa explicar a causa da falha e tome a ação apropriada. Reveja o procedimento de restauração de dump para garantir que os passos necessários foram tomados.

Arquivos de dados e índice são gravados no arquivo stream de dump pela leitura do conteúdo do arquivo a partir do disco. Como um arquivo não é lido em sua totalidade instantaneamente, um arquivo de dados ou índices no arquivo stream de dump pode ser formado pelo conteúdo do arquivo em um determinado período de tempo. A recuperação do dump inclui o registro de toda atividade transacional durante o período do dump, para que o arquivo possa ser restituído a seu estado no momento do início do dump. Por esta razão, se o processo de restauro do dump recupera de forma correta os arquivos do arquivo stream de dump, mas falha ao tentar restaurar o arquivo para o momento do dump, os dados e índices restaurados encontram-se em estado desconhecido.

Se ctrdmp falha na tentativa de restaurar os arquivos para o momento do dump e nenhuma outra solução pode ser encontrada, os arquivos de dados e índices podem ser reconstruídos para garantir que os arquivos estejam em sincronismo. Note ainda que o processo de rebuild pode falhar porque o arquivo de dados pode conter uma mistura de imagens dos registros de momentos diferentes. Como última alternativa, os arquivos devem ser restaurados de um backup diferente.

Nota: Considere a possibilidade de realizar as operações de restauração do dump offline imediatamente após a realização do dump dinâmico. Desta forma, se a restauração falhar, o problema pode ser solucionado no momento do backup e não no momento do restauro.

www.faircom.com All Rights Reserved 22

6. Index

C Configuração do Dump dinâmico ............................. 4 ctdump – Programando os backups automáticos

do c-tree Server .................................................... 4 ctfdmp – Avançando o Backup no tempo

(Rollforward) ....................................................... 12 ctrdmp – Restaurando backups do c-tree Server ..... 8

D Dump dinâmico ......................................................... 1

O Online Disk Snapshot ............................................... 3 Outras opções de Backup ...................................... 16

R Reconstruindo Índices e Compactando arquivos

de dados ............................................................. 14 Recuperação do Dump Dinâmico ............................. 9 Resolução de problemas específicos de Dump

dinâmico com o c-tree Server ............................. 19 Rolling Back do Backup .......................................... 13