Tutorial Parte 4a - Realizando backup (ontape)

Versão para impressãoEnviar para amigoVersão PDF

Nesta parte do tutorial iremos demonstrar como realizar backup do Informix utilizando uma das ferramentas nativas.
A explicação básica de como funciona o backup e uma explicação geral das ferramentas disponíveis você irá encontrar neste artigo.

Iremos iniciar pelo ontape , por ser a ferramenta mais simples e facil de trabalhar.

  1. Recursos do ontape
  2. Ambiente para geração do backup
  3. Configurações
  4. Backup Físico
    1. Gerando backup para um arquivo
    2. Backup incremental
    3. Gerando backup para uma fita
    4. Gerando backup para STDOUT
    5. Gerando backup para um diretório
    6. Verficando se o backup ocorreu com sucesso
    7. Compactando / Encriptando
    8. Descartando o backup / Fake Backup
    9. Exemplo de execução de backups agendados
    10. Monitorando backup físico
  5. Backup Lógico
    1. Gerando backup lógico
    2. Automatizando o backup lógico
    3. Monitorando backup lógico

Recursos do ontape


O ontape é utilizado para gerar/restaurar backup do banco de dados e seus logs.
Ele é extremamente simples de se trabalhar e bem flexível.

Os recursos que temos com ontape relacionado ao backup e iremos demonstrar aqui são:

  • Geração do backup físico (Physical Backup) de todos os dados e incremental
  • Compactação/encriptação do backup durante a geração
  • Identificar se a execução ocorreu com sucesso
  • Geração do backup logico (Logical Logs)
  • Geração automática dos Logical Logs.

Ambiente para geração do backup


Para recomendações sobre onde gerar o backup, leia este artigo
O ontape gera a copia de apenas os dados e não da configuração da instancia, para informações sobre o que mais realizar o backup separadamente veja o artigo citado no paragrafo anterior.

Configurações


A configuração do backup com o ontape fica quase toda no arquivo $ONCONFIG e são os parâmetros:
  • TAPEDEV, TAPEBLK, TAPESIZE
    Define o destino do backup físico, tamanho do bloco e tamanho da fita, possui o nome "TAPE" (fita) devido antigamente se trabalhar unicamente (na maioria dos casos) com fita. Porém com o tempo o Informix foi flexibilizando e atualmente você pode apontar estas definições para: Device de Fita, Arquivo, Diretório , /dev/null ou STDIO.
  • LTAPEDEV, LTAPEBLK, LTAPESIZE
    Idem ao item anterior, com a unica diferença de que aqui são gerados os Logical Logs.
  • BACKUP_FILTER, RESTORE_FILTER
    É nestes dois parâmetros que se define os comandos externos para realizar a compactação , encriptação, geração de checksum e etc do backup.
Observação importante: Para restaurar um backup, deve-se utilizar a mesma configuração de bloco utilizado na geração do backup.

Para ambientes em que o backup é gerado em um diretório, há um parâmetro opcional, porém este é uma variável de ambiente que define um prefixo para o nome dos arquivos gerados: IFX_ONTAPE_FILE_PREFIX .

Apesar de estes parâmetros estarem no ONCONFIG não é necessário reiniciar a instancia para que tenham efeito, sempre que o ontape é executado ele re-lê estas configurações. A unica exceção que ocorre é quando definido o destino do Logical Log para /dev/null , mas irei explicar isso depois.



Backup Físico


Gerando backup para um arquivo


Gerar o backup para um arquivo é algo possível de fazer em todas as versões do Informix.
Na geração para arquivo deve-se ter cuidado com o seguinte:
  • O arquivo onde o backup será gerado já deverá existir.
  • O arquivo deverá pertencer ao usuário/grupo "informix". As permissões do arquivo gerado deverá ser Read/Write apenas para o usuário/grupo.
  • Deve-se ter certeza de que o parâmetro TAPESIZE é maior que o backup a ser gerado ou defini-lo igual a 0 para que o processo não seja interrompido.
No meu ambiente criei o diretório /ifmxdados/physbkp , neste diretório irei salvar os backups gerados.
Edite o arquivo $ONCONFIG e defina o parâmetro TAPEDEV para o arquivo com seu caminho completo
    TAPEDEV /ifmxdados/physbkp/backup_informix.ontape
    
Crie o arquivo de backup e corrija suas permissões se necessário
    $ cd /ifmxdados/physbkp
    $ touch backup_informix.ontape
    $ chmod 660 backup_informix.ontape
    $ ls -lh backup_informix.ontape
    -rw-rw---- 1 informix informix 0 2009-06-24 14:39 backup_informix.ontape
    

Para gerar o backup, não é preciso tomar nenhum procedimento no banco ou tirar os acessos dos usuários.
Basta executar o comando abaixo

    # Os parâmetros utilizados representam:
    # -s Geração de backup 
    # -L [nivel] Indica o nivel do backup a ser gerado (completo ou incremental)
    #
    # Ao executar o comando ele irá trabalhar de modo interativo, solicitando que
    # o arquivo seja "montado", isso ainda é legado da época das fitas, apenas 
    # confirme e o backup será iniciado.
    $ ontape -s -L 0
    
    Please mount tape 1 on /ifmxdados/physbkp/backup_informix.ontape and press Return to continue ...
    10 percent done.
    20 percent done.
    30 percent done.
    40 percent done.
    50 percent done.
    60 percent done.
    100 percent done.
    Read/Write End Of Medium enabled: blocks = 11488
    
    Please label this tape as number 1 in the arc tape sequence.
    This tape contains the following logical logs:
     47
    Program over.
    
    # Aqui podemos ver que o arquivo de backup foi gerado com 359MB.
    $ ls -oh /ifmxdados/physbkp/backup_informix.ontape
    -rw-rw---- 1 informix 359M 2009-06-24 14:43 /ifmxdados/physbkp/backup_informix.ontape
    
Se você já esta acostumado a trabalhar com shells já deverá estar imaginando certas dificuldades de trabalhar com o ontape em processos agendados. Não se preocupe há meios de trabalhar com esta interatividade nas versões mais antigas , para versões mais novas já há meios de gerar o backup sem esta interatividade.

Repare que ele informa um número do Logical Log, este número é muito importante pois em caso de restore será a partir deste logical log que você poderá restaurar seu banco até o momento mais próximo da parada.

Pronto, o backup foi gerado para um arquivo


Backup incremental


A geração do backup de modo incremental funciona com qualquer um dos modos (arquivo, fita, STDIO, diretório).
Para isso deve-se apenas especificar o nivel 1 ou 2 no parâmetro -L.
    # Gera backup incremental nivel 1 utilizando STDIO
    $ ontape -s -L 1 -v -t STDIO > /ifmxdados/physbkp/backup_informix.ontape.nivel1
    # Gera backup incremental nivel 2
    $ ontape -s -L 2 -v -t STDIO > /ifmxdados/physbkp/backup_informix.ontape.nivel2
    


Gerando backup para uma fita


Para gerar o backup em uma fita (DLT/LTO) não difere muito do arquivo.
Defina o device de fita
    # Exemplos
    TAPEDEV /dev/rmt/0m
    # ou um device remoto
    TAPEDEV hostalpha:/dev/rmt/0m
    # ou no caso de ambiente linux 
    TAPEDEV /dev/st0
    
É necessário especificar os parâmetros TAPEBLK e TAPESIZE.
O parâmetro TAPEBLK informa o tamanho de bloco utilizado e pode afetar a performance da geração do backup. Deve-se sempre seguir um valor múltiplo utilizado no dispositivo de fita e não deve ultrapassar o tamanho do cache do dispositivo para evitar perda de performance.

O parâmetro TAPESIZE deve ser informado para limitar no tamanho da fita, assim se este tamanho for alcançado o ontape irá solicitar que seja montada a fita numero 2 e assim por diante.
Caso queira utilizar a fita até o fim, mantenha este parâmetro igual a 0 e o ontape irá identificar o final da fita, solicitando a proxima automaticamente.
Observação: este recurso de detectar o fim da fita está disponivel a partir da versão 9.40 xC1.

Ao apontar a gravação do backup para um dispositivo de fita o Informix exige que o device trabalhe de modo que seja realizado o rewind da fita antes e depois de executar o backup.



Gerando backup para STDOUT


A partir da versão 10 passou a ser possível a geração de backup para o STDOUT do comando ontape flexibilizando assim mais ainda a geração do backup.
Antes deste recurso para trabalhar de modo similar era necessário utilizar arquivos fifo (mkfifo/mknod).
Para informações sobre o STDOUT / STDIO veja o manual do Linux/unix : man stdio

Este tipo de geração de backup pode ser utilizado para processos agendados por não ter interatividade com o usuário.

Neste modo de backup os parâmetros TAPEDEV é opcional e o TAPESIZE tem seu valor ignorado.
O parâmetro TAPEDEV é opcional porque se você quiser gerar o backup utilizando o STDIO pode forca-lo passando um parâmetro no comando ontape, porém se quiser deixa-lo como meio padrão de execução, pode definir o TAPEDEV como STDIO.
Para gerar o backup utilizando o STDOUT veja abaixo.

    # Os parâmetros utilizados são os mesmos para gerar
    # backup para fita/arquivo, com a adição de apenas mais um:
    # -t STDIO Gera o backup no STDOUT do comando ontape
    $ ontape -s -L 0 -t STDIO > /ifmxdados/physbkp/backup_informix.ontape
    
    # Repare que o comando acima não exibe nenhuma mensagem, isso é devido o
    # STDOUT ser utilizado para mensagens passar a ser utilizado para gerar 
    # o backup. Como alternativa podemos adicionar o parâmetro -v que irá gerar as 
    # mensagens no STDERR 
    $ ontape -s -L 0 -v -t STDIO > /ifmxdados/physbkp/backup_informix.ontape
    10 percent done.
    20 percent done.
    30 percent done.
    40 percent done.
    50 percent done.
    60 percent done.
    100 percent done.
    
    Please label this tape as number 1 in the arc tape sequence.
    This tape contains the following logical logs:
     47
    Program over.
    
    # Pode-se utilizar em conjunto com outros comandos para compactação
    # encriptação e etc.
    $ ontape -s -L 0 -t STDIO | gzip -9c > /ifmxdados/physbkp/backup_informix.ontape.gz
    $ ls -oh /ifmxdados/physbkp/backup_informix.ontape.gz
    -rw-r----- 1 informix 10M 2009-06-24 15:38 /ifmxdados/physbkp/backup_informix.ontape.gz
    
    # Para utilizar o STDIO como padrão na geração de backup basta defini-lo 
    # no parâmetro TAPEDEV
    $ onstat -c |egrep "^TAPEDEV"
    TAPEDEV STDIO
    $ ontape -s -L 0  > backup_ifx.L0
    



Gerando backup para um diretório


Na versão 11.10 foi incluído um novo recurso na geração de backup em file system que é a criação e organização automatica dos arquivos de backup em um diretório.

Este tipo de geração de backup pode ser utilizado para processos agendados por não ter interatividade com o usuário.
Observação: No ontape existe o parâmetro -d para trabalhar de modo não-interativo, porém nunca vi necessidade de utiliza-lo no backup *físico*.

Características deste modo de utilização:

  • O valor do parâmetro TAPESIZE é ignorado.
  • O Informix gera e renomeia automaticamente os arquivos de backups.
  • O diretório onde os backups são gerados deve pertencer ao usuário/grupo informix
  • O diretório onde os backups são gerados deve ter permissão de leitura/gravação apenas para o usuário/grupo
  • O nome dos arquivos gerado seguem a sintaxe: hostname_servernum_Ln
    hostname = Nome do host onde a instancia é executada
    servernum = Valor do parâmetro SERVERNUM no arquivo de configuração ONCONFIG
    Ln = Nivel do backup : 0 , 1 ou 2.
  • Quando um novo backup é iniciado e existe o arquivo do backup anterior, este é renomeado conforme a sintaxe: hostname_servernum_AAMMDD_HHMMSS_Ln
    AAMMDD_HHMMSS = É a data/hora que foi realizado o checkpoint do backup em questão, para assim ajudar a manter uma rastreabilidade com relação aos logs gerado após este backup.
  • É possível alterar o prefixo dos arquivos gerados utilizando a variável de ambiente IFX_ONTAPE_FILE_PREFIX.
    O valor informado nesta variável irá substituir o texto hostname_servernum.
    Esta variável deve ser definida na mesma sessão em que o ontape é executado.
  • Nenhum dos arquivos gerados não são apagados, é necessário uma intervenção manual para isso.

Para utilizar este recurso basta configurar o parâmetro TAPEDEV para um diretório

    # Aqui podemos ver que já alterei para o diretório a geração do meu backup.
    $ onstat -c |grep ^TAPEDEV
    TAPEDEV /ifmxdados/physbkp
    
    # Ao executar o ontape, o backup inicia automaticamente sem solicitar 
    # interação do usuário e ao final informa o nome do arquivo criado.
    $ ontape -s -L 0
    10 percent done.
    20 percent done.
    30 percent done.
    40 percent done.
    50 percent done.
    60 percent done.
    100 percent done.
    File created: /ifmxdados/physbkp/note-cim_1_L0
    
    Please label this tape as number 1 in the arc tape sequence.
    This tape contains the following logical logs:
     47
    Program over.
    
    # Se executado novamente o backup , porém com nivel 1 um novo 
    # arquivo é gerado
    $ ontape -s -L 1
    100 percent done.
    File created: /ifmxdados/physbkp/note-cim_1_L1
    
    Please label this tape as number 1 in the arc tape sequence.
    This tape contains the following logical logs:
     47
    Program over.
    
    # Alterei o prefixo do arquivo
    $ export IFX_ONTAPE_FILE_PREFIX=bkp.$INFORMIXSERVER
    $ echo $IFX_ONTAPE_FILE_PREFIX
    bkp.idstitan
    
    # Agora o arquivo é gerado com o novo prefixo
    $ ontape -s -L 2
    100 percent done.
    File created: /ifmxdados/physbkp/bkp.idstitan_L2
    
    Please label this tape as number 1 in the arc tape sequence.
    This tape contains the following logical logs:
     47
    Program over.
    
    # Aqui temos os arquivos de backup gerados.
    $ ls -oh /ifmxdados/physbkp/
    total 376M
    -rw-rw---- 1 informix 8.1M 2009-06-24 21:16 bkp.idstitan_L2
    -rw-rw---- 1 informix 360M 2009-06-24 21:03 note-cim_1_L0
    -rw-rw---- 1 informix 8.1M 2009-06-24 21:06 note-cim_1_L1
    
    # Para demonstrar como o arquivo de backup é renomeado 
    # no exemplo abaixo gerei um backup nivel 0, 1 e 2 e 
    # re-executei o nivel 2.
    $ ls -ohtr
    total 385M
    -rw-rw---- 1 informix 360M 2009-06-24 21:50 bkp.idstitan_L0
    -rw-rw---- 1 informix 8.2M 2009-06-24 21:51 bkp.idstitan_L1
    -rw-rw---- 1 informix 8.2M 2009-06-24 21:51 bkp.idstitan_20090624_215105_L2
    -rw-rw---- 1 informix 8.4M 2009-06-24 21:54 bkp.idstitan_L2
    



Verficando se o backup ocorreu com sucesso


Para identificar se a geração de um backup foi ou não executada com sucesso, pode-se utilizar o exit code do comando ontape. Se retornado zero a execução ocorreu com sucesso, se retornado um houve algum erro.
Veja este exemplo em shell unix.
    # Uma shell simples que exibe uma mensagem dizendo se o 
    # backup foi executado com sucesso ou não
    ontape -s -L 0 > ontape.log 2>ontape.erros
    if [ $? -eq 0 ]; 
    then
      echo "Backup executado com sucesso!"
    else
      echo "Backup falhou!"
    fi
    



Compactando / Encriptando


A partir da versão 11.10 foram adicionados os parâmetros BACKUP_FILTER e RESTORE_FILTER.
Com ele é possível adicionar comandos "on fly" para compactar o backup , encriptar e outro tipo de tratamento ao dado que queira realizar.
Estes parâmetros aceitam um comando que será executado durante o backup e terá efeito entre a leitura dos dados e a geração do arquivo de backup. O comando colocado nestes parâmetros deverão trabalhar no modo STDIO, recebendo o dado pelo STDIN e gerando pelo STDOUT.
Ao definir um comando para a geração do backup, você deverá definir o comando compativel para o restore.
Este filtro terá efeito sobre o Backup Físico, Backup Logico e qualquer dos modos de backup gerado pelo ontape ( arquivo, STDIO, diretório, fita ).

Observações

  • O tipo de arquivo gerado não será do comando utilizado no parãmetro pois o Informix adiciona mais informações sobre o backup.
  • Quando gerado backup para arquivo ou fita o valor do TAPESIZE continua sendo válido e seu valor é referente ao arquivo gerado, ou seja, ao montade de dados gerado após o filtro apliacado.
    # O valor colocado nestas opções, se tiverem parâmetros deverão ser descritos 
    # entre aspas simples.
    $ onstat -c |egrep "^BACKUP_FILTER"
    BACKUP_FILTER '/usr/bin/gzip -c'
    RESTORE_FILTER '/usr/bin/gzip -dc'
    
    # Veja que no output do ontape ele informa qual filtro está sendo utilizado
    $ ontape -s -L 0
    Using the backup and restore filter /usr/bin/gzip -c.
    10 percent done.
    20 percent done.
    30 percent done.
    40 percent done.
    50 percent done.
    60 percent done.
    100 percent done.
    File created: /ifmxdados/physbkp/note-cim_1_L0
    
    Please label this tape as number 1 in the arc tape sequence.
    This tape contains the following logical logs:
     48
    Program over.
    
    # Veja que o arquivo foi criado com 11 MB, quando o normal era 350 MB
    $ ls -oh 
    total 11M
    -rw-rw---- 1 informix 11M 2009-06-26 09:21 note-cim_1_L0
    
    # Aqui demonstro que o arquivo não é gerado com um gzip porque o Informix
    # adiciona informações sobre o backup no cabeçalho do arquivo.
    $ file note-cim_1_L0
    note-cim_1_L0: DOS executable (device driver), name: ¼ for DOS
    
    $ gzip -l note-cim_1_L0
    gzip: note-cim_1_L0: not in gzip format
    
    # Veja que mesmo se gerado para STDIO o backup já é gerado
    # compactado
    $ ontape -s -L 0 -t STDIO > backup.stdio
    $ ls -oh
    total 22M
    -rw-r----- 1 informix 11M 2009-06-26 09:29 backup.stdio
    -rw-rw---- 1 informix 11M 2009-06-26 09:21 note-cim_1_L0
    

Para encriptar um backup basta utilizar um comando como o mcrypt.



Descartando o backup / Fake Backup


Também preciso explicar como descartar o backup, ou seja, não gera-lo. Isso é util e as vezes necessário em certas situações que requer que um backup nivel 0 seja executado porém seu banco é grande e você não quer realmente gerar um backup.
Na realidade já fizemos isso ao apontar o TAPEDEV e LTAPEDEV para o /dev/null :
    $ onstat -c |egrep "^L?TAPEDEV"
    TAPEDEV /dev/null
    LTAPEDEV /dev/null
    

Ao definir o destino como /dev/null a instancia detecta isso na geração do backup (execução do ontape) e executa como se o backup tivesse sido feito , mas isso é instantaneo, sem ler os dados. Veja abaixo, que a execução do "backup" da minha instancia que possui mais de 350 MB de dados levou menos de 1 segundo.

    $ time ontape -s -L 0
    Archive to tape device '/dev/null' is complete.
    
    Program over.
    
    real    0m0.935s
    user    0m0.028s
    sys     0m0.052s
    

Complementando esta opção também se utiliza o fake backup para não registrar na Instancia o backup feito. Isso quer dizer que se você executar um backup nivel 0 como fake após um nivel 1 , o ultimo backup válido para a Instancia continuará a ser o nivel 1.
Esta opção é muito útil em gerar backup para ambientes de alta disponibilidade (HDR,RSS).



Exemplo de execução de backups agendados


Para agendar backups em ambientes linux/unix você precisarã utilizar o crontab
Nele basta colocar a chamada do comando ontape, mas antes é preciso definir as váriaveis de ambiente do Informix. Então você pode criar uma shell com todos os comandos ou colocar tudo diretamente no crontab
    # Abaixo segue uma shell bem simples de backup que ao finalizar 
    # envia um e-mail com o log da execução. Ela executa os seguintes passos:
    # 1 - define variaveis com a shell env.idstitan
    # 2 - Exibe as configurações definidas no momento do backup
    # 3 - Executa o ontape
    # 4 - Captura o status de execução (0 = ok ou 1 = erro )
    # 5 - Verifica o status e envia o email 
    # Observação: Nesta configuração o backup precisa trabalhar de modo não interativo
    #             que é a configuração para  em diretório ou STDIO
    $ cat /usr/local/bin/backup_ifx.sh
    {
    . /usr/local/bin/env.idstitan
    echo " "
    echo "Configurações... "
    onstat -c | egrep "^L?TAPE|^BACKUP_FILTER|^RESTORE_FILTER"
    echo " "
    echo "Backup iniciado: $(date)"
    # Geracao para diretorio
    ontape -s -L 0
    # Geracao para STDIO
    # ontape -s -v -L 0 -t STDIO > /ifmxdados/physbkp/backup_ifx.L0
    export vStatus=$?
    echo "Backup finalizado: $(date)"
    }  > /tmp/backup_ifx.log 2>&1
    # Envia email para usuario cmartins e email externo dba@suaempresa.com.br
    if [ $vStatus -ne 0 ]; then
      cat /tmp/backup_ifx.log | mail -s "Backup Falhou!" cmartins dba@suaempresa.com.br
    else
      cat /tmp/backup_ifx.log | mail -s "Backup Executado!" cmartins <a href="mailto:dba@suaempresa.com.br">dba@suaempresa.com.br</a>
    fi
    
    # Este seria a definição no crontab para executar todos os dias a 1 da manhã
    # através da shell
    $ crontab -l
    00 01 * * * /usr/local/bin/backup_ifx.sh
    
    # Aqui seria a execução sem shell
    $ crontab -l
    00 01 * * * . /usr/local/bin/env.idstitan ; $INFORMIXDIR/bin/ontape -s -L 0 -t STDIO > /ifmxdados/physbkp/backup_ifx.L0
    

Na shell acima eu utilizei o comando mail para enviar os e-mails. Para enviar um e-mail externo em uma configuração padrão de um sistema linux/unix seria necessário configurar um serviço de relay SMTP como sendmail/postfix na maquina.
Para evitar isso, pois a maquina onde executo o banco de dados não é servidor de e-mail, utilizo o programa msmtp.
Com este programa você continua a utilizar o client mail do linux/unix mas ele envia para um SMTP remoto.

    # Para utilizar o msmtp basta configurar o arquivo .mailrc no diretório HOME
    # do usuário (no nosso caso informix)
    $ cat $HOME/.mailrc
    set sendmail="/usr/bin/msmtp"
    
    # Configurar o arquivo .msmtprc também no diretório HOME do usuário
    $ cat $HOME/.msmtprc
    host smtp.mail.yahoo.com.br
    port 25
    timeout 60
    protocol smtp
    auth plain
    user seu_user_aqui
    password sua_senha_aqui
    from  seu_email@suaempresa.com.br
    



Monitorando backup físico


Para monitorar backups gerados pelo ontape você pode utilizar o arquivo de log da instancia, definido no parámtro MSGPATH do $ONCONFIG ou através do comando onstat -m e o comando onstat -g arc.

    # No arquivo de log você irá encontrar informações de quando o backup foi iniciado
    # e quando ele finalizou ou foi abortado.
    $ onstat -m 
    ....
    10:04:26  Level 0 Archive started on rootdbs, llog, plog, dados1, dados2
    10:04:49  Archive on rootdbs, llog, plog, dados1, dados2 Completed.
    ...
    10:07:35  Level 0 Archive started on rootdbs, llog, plog, dados1, dados2
    10:07:37  Archive on rootdbs, llog, plog, dados1, dados2 ABORTED.
    10:07:37  Aborted by client.
    
    # Este comando exibe quando foi executado os backups nivel 0,1,2 de 
    # todos os dbspaces
    # Neste exemplo gerei um backup nivel 0,1 e 2 um seguido do outro
    $ onstat -g arc
    IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 00:04:01 -- 692120 Kbytes
    num   DBSpace            Q Size Q Len  Buffer partnum    size     scanner
    Dbspaces - Archive Status
    name               number level date             log        log-position
    rootdbs            1      0     06/26/2009.13:31 48         0x739018
                              1     06/26/2009.13:33 48         0x73e018
                              2     06/26/2009.13:34 48         0x748018
    llog               2      0     06/26/2009.13:31 48         0x739018
                              1     06/26/2009.13:33 48         0x73e018
                              2     06/26/2009.13:34 48         0x748018
    plog               3      0     06/26/2009.13:31 48         0x739018
                              1     06/26/2009.13:33 48         0x73e018
                              2     06/26/2009.13:34 48         0x748018
    dados1             5      0     06/26/2009.13:31 48         0x739018
                              1     06/26/2009.13:33 48         0x73e018
                              2     06/26/2009.13:34 48         0x748018
    dados2             6      0     06/26/2009.13:31 48         0x739018
                              1     06/26/2009.13:33 48         0x73e018
                              2     06/26/2009.13:34 48         0x748018
    
    



Backup Lógico

A geração de backup do Logical Log é de extrema importancia, ele possui seus próprios parâmetros configuração já que ele é salvo em diferente destino do backup físico, mas também trabalha com arquivos, fitas, diretório, /dev/null e STDIO.

    Observações:

    • O Logical Log também sofre efeito dos parâmetros BACKUP_FILTER e RESTORE_FILTER
    • Quando utilizado um filtro o parâmetro TAPESIZE obrigatóriamente passa a exigir um valor maior que zero.
    O backup logico normalmente é gerado conforme cada Logical Log é utilizado 100% e deixa de ser o log atual.
    Se você possui 10 Logical Logs de 10 MB cada e em um unico dia todos estes Logs são utilizados você terá 100 MB de backups feito e se a utilização da sua instancia for intensa e estes logs sejam utilizado mais de uma vez, você terá muito mais backups no mesmo dia. Sendo assim você precisará prever a quantide de espaço/fitas necessários para salvar estes backups até que o próximo backup físico seja realizado e assim poder descarta-los.
    Ele pode ser gerado de duas formas: Continuo ou Automatico.



    Gerando backup lógico


    Modo Automatico
    É executado automaticamente pela instancia através de alarmes automaticos e shell em conjunto com o comando ontape -a. Mas estas configurações precisam estar 100% funcionais, caso contrário o backup não será gerado e você irá correr risco de ter sua instancia bloqueada por falta backup do logical log.
    Para ver como configurar o modo automatico, veja mais abaixo.

    Modo continuo
    A geração no modo continuo é feita através do comando ontape -c e normalmente é utilizado através de um operador e/ou direcionado para fitas.
    Quando executado o backup continuo

    Observação importante: Sempre que é executado o backup lógico o ontape pede de modo interativo para que seja informado se o logical log atual deve ser backupeado ou não. Para evitar esse comportamento em situações de automação do backup lógico deve-se utilizar o parâmetro -d para desativar a interatividade.

    Destino do backup lógico

    • FITA
      Basta definir para o path do device
    • ARQUIVO
      É possível trabalhar deste modo, porém é preciso muito cuidade e tratamento após o arquivo ser gerado, isso devido o backup gerar o arquivo sempre com o mesmo nome, sobrescrevendo o anterior.
      Além do cuidado para identificar qual o número do(s) log(s) salvo neste arquivo, que neste caso é informado apenas no output do ontape.
    • STDIO
      Funciona igual ao backup físico.
    • DIRETÓRIO
      Funciona igual ao backup físico, com a unica diferença no nome do arquivo gerado, que segue o padrão hostname_servernum_Lognnnnnnnnnn e também sofre alteraçao se utilizada a variável IFX_ONTAPE_FILE_PREFIX.
      O valor Lognnnnnnnnnn contém o número do logical log salvo.
    • Particularidade do parâmetro LTAPEDEV - /dev/null
      Descarta o backup.
      Quando a instancia é iniciada (oninit), se o parâmetro LTAPEDEV estiver direcionado para /dev/null o backup do logical log é descartado automaticamente e não há como mudar isso sem reiniciar, pois mesmo que se altere o parâmetro no ONCONFIG ele não terá efeito sobre a instância (oninit) já em execução.
      Para a situação inversa, se ao iniciar a instancia o LTAPEDEV está definido para um path válido e depois é alterado para /dev/null o backup será descartado, mas para isso é necessário executar o ontape manualmente no modo continuo ou através do modo automatico


    Automatizando o backup lógico


    Para trabalhar com a geração do backup automático é altamente recomendável que o utilize apenas os modos de geração para diretórios ou STDIO. Porém é possível de trabalhar com ele em todos os modos.
    Mas para utiliza-lo em outros modos terá que tomar os seguintes cuidados:
    • Geração para arquivo: Você terá que tratar via shell a identificação e renomeação dos arquivos de logs gerados, Da trabalho para escrever a shell, mas é possível pois já utilizei desta artimanha na versão 7.31.
    • Geração para fita(*): Você terá que tratar via shell um log para identificar quais logical logs estão em qual fita e realizar a troca de fita antes que esta finalize ou o programa irá "travar" solicitando a proxima fita. Além disso você terá o risco de trocar uma fita no exato momento em que um log iniciar seu backup.
    (*) Particulamente nunca configurei o modo automatico para fita, portanto a explicação dela é teórica.

    Bom para configurar o backup em modo automatico você terá que configurar o $ONCONFIG e o arquivo $INFORMIXDIR/etc/alarmprogram.sh , esta shell já vem com Informix e é muito util para receber informações sobre situações com o banco de dados. Em breve irei escrever um artigo de como personaliza-lo completamente.

      # Para começar é necessário configurar o ONCONFIG, nele você terá que definir 
      # os parâmetros ALARMPROGRAM e ALRM_ALL_EVENTS
      # ALARMPROGRAM - Define qual será a shell que irá realizar tratamento dos 
      #                alarmes/avisos gerado pela instancia
      # ALRM_ALL_EVENTS - Define qual nivel de alarme será disparado pela instancia
      #                   e executar o ALARMPROGRAM. O valor 1 refere-se apenas aos 
      #                   avisos de logical logs 100% utilizados.
      # 
      # Abaixo a minha configuração está para gerar backup em diretório e 
      # com o avisos/alarmes definidos para gerar eventos de log full.
      $ onstat -c |egrep "^LTAPE|^AL[AR]|^BACKUP_FILTER|^RESTORE_FILTER"
      LTAPEDEV /ifmxdados/llogbkp
      LTAPEBLK 32
      LTAPESIZE 100000
      BACKUP_FILTER '/usr/bin/gzip -c'
      RESTORE_FILTER '/usr/bin/gzip -cd'
      ALARMPROGRAM $INFORMIXDIR/etc/alarmprogram.sh
      ALRM_ALL_EVENTS 1
      
      # Observação: Repare que por ter o filtro ativo (com gzip) defini o 
      #             LTAPESIZE com um tamanho alto, para garantir que não 
      #             terei problemas.
      
      # Veja a alteração da shell ALARMPROGRAM que fiz, alterei apenas dois 
      # parâmetros, um para informar que os backups dos logical logs devem ser 
      # realizados e o outro para utilizar o comando ontape
      $ ls alarmprogram.*
      alarmprogram.bkp  alarmprogram.sh
      
      $ diff alarmprogram.bkp alarmprogram.sh
      31c31
      < BACKUPLOGS=N
      ---
      > BACKUPLOGS=Y
      62c62
      < BACKUP_CMD="onbar -b -l"
      ---
      > BACKUP_CMD="ontape -d -a"
      
    Pronto, isso é o suficiente para o backup do logical log ser gerado automaticamente. Mas para ter 100% de efeito é necessário reiniciar a instancia devido o parâmetro ALRM_ALL_EVENTS.
    Para testar, reinicie a instancia e execute o comando onmode -l e monitore com o onstat -l, o onmode força a troca do logical log, fazendo com que o backup também seja forçado.

    Monitorando backup lógico


    Utilize o comando onstat -l, este comando exibe o status de todos os logical logs.

    No exemplo abaixo, os Flags representam:

      B - Logical Log com backup feito
      U - Logical log utilizado
      C - Logical log em uso (Current)
      L - Logical log em que o ultimo checkpoint foi realizado (Last checkpoint).

    Você precisa ficar atento aos logs sem o flag B, pois estes são os que não tiveram seu backup realizado.

      $ onstat -l 
      ...
      address  number   flags    uniqid   begin                size     used    %used
      5ec9acc8 7        U-B----  53       2:53                 5000        4     0.08
      5ec9ad10 8        U-B----  54       2:5053               5000       49     0.98
      5ec9ad58 9        U-B----  55       2:10053              5000        9     0.18
      5ec9ada0 1        U-B----  56       2:15053              5000     1376    27.52
      5ec9ade8 5        U-B----  57       1:293                5000        7     0.14
      5ec9ae30 2        U------  58       2:20053              5000        6     0.12
      5ec9ae78 3        U---C-L  59       2:25053              5000      290     5.80
      5ec9aec0 4        U-B----  52       2:30053              5000        4     0.08
       8 active, 8 total
      
      # O histórico da geração do backup dos lógicals logs pode ser 
      # visto no arquivo de log da instancia
      $ onstat -m 
      ...
      Message Log File: /dados/IBM/ids1150uc4de/tmp/online.log
      ...
      10:42:29  Logical Log 63 Complete, timestamp: 0x64ac36.
      10:42:29  Logical Log 63 - Backup Started
      10:42:29  Logical Log 63 - Backup Completed
      10:42:30  Logical Log 64 Complete, timestamp: 0x64ac70.
      10:42:30  Logical Log 64 - Backup Started
      10:42:30  Logical Log 64 - Backup Completed
      10:42:33  Logical Log 65 Complete, timestamp: 0x64acb8.
      10:42:33  Logical Log 65 - Backup Started
      10:42:33  Logical Log 65 - Backup Completed
      

    4.666665
    Média: 4.7 (6 votos)
    Sua avaliação: Nenhum

    External Backup em HDR / RSS

    Olá a todos,
    Se você está trabalhando com a versão 11.50 xC6 ou superior nos "sabores" Workgroup ou Enterprise, você sabe que tem direito a ter 2 servidores secundários em "Idle standby" né? Um HDR e outro RSS onde não pode ter acessos (nem de leitura, nem para backup).
    Porém se possuir uma licença simples para um deles, poderá gerar seus backups a partir dele. Utilizado o recurso de External Backup. Desta maneira seu servidor principal não tem mais a performance afetada durante a execução do backup.
    O External Backup é um recurso onde você faz uma cópia manual de seus chunks, realizando os seguintes procedimentos:
    - Bloqueia o servidor: onmode -c block
    - Copia seus chunks (com LVM Snapshot, cp , dd, tar ou outro comando qualquer).
    - Libera o servidor: onmode -c unblock

    Gostei bastante das

    Gostei bastante das informações que encontrei nesse tutorial, e algumas já me esclareceram boas dúvidas. Queria aproveitar e ver se alguém consegueme dar uma luz. Vi uma solução aqui que se aplica a Unix. No meu caso, utilizo Windows 2003 Server. Existe alguma forma de se eliminar o pedido de inserção de fita de backup? A minha idéia era fazer um script para chamar a rotina de backup de forma automática, mas sem aparecer esta mensagem de confirmação. Alguma idéia?

    ontape - windows

    Ola Mauro,
    A partir da versão 11 (não lembro se 11.10 ou 11.50) foi adicionado a opção "-d" no ontape, onde ele não faz interação, porém até aonde sei ele só é válido para quando direcionado para diretório, mas não custa testa-lo.
    Outro meio de evitar a interatividade é utilizar a opção "-t STDIO" e direcionar para o arquivo diretamente pelo comando ontape.
    Mas se você quiser manter o comando do jeito que está, também tem como, faz tempo que não utilizo isto em windows, mas acho que não a erro pois até aonde lembro é igual ao Unix:

    ontape -s -L 0 <<EOF
    
    EOF

    É preciso deixar uma ou duas linhas em branco.

    Comentar

    O conteúdo deste campo é privado não será exibido ao público.
    • Endereços de páginas de internet e emails viram links automaticamente.
    • Você pode usar tags BBCode no texto.
    • Tags HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>

    Mais informações sobre as opções de formatação

    CAPTCHA
    Este teste é para bloquear programas automatizados e previnir spams
    CAPTCHA de Imagem
    Digite o texto exibido na imagem.