Construindo scripts eficientes: Backup online com probkup em Linux/Unix

Escrito por Adriano Corrêa em 27 de julho de 2011, 09:05h

Depois de publicar o artigo de backup online com o probkup em windows, algumas pessoas me questionaram como ficaria o script em Linux ou Unix.

Então, converti o script para o que segue abaixo. Testei-o em Linux, porém deverá funcionar para qualquer Unix também.

Lembrando que o comportamento do Progress OpenEdge, assim como os comandos utilizados, são iguais para qualquer ambiente.

Da mesma forma que o ambiente Windows, optei por varrer todos os bancos para executar o script de backup ao mesmo tempo.

  [backup-tudo.sh]
    for banco in `ls *.db`
    do
    sh backup-bd.sh `basename $banco .db` /simula/backupbd /simula/backupai &
    done

Esse script executará o backup simultaneamente para todos os bancos de dados, através de um segundo script chamado backup-bd.sh. O backup dos bancos será gravado no diretório /simula/backupbd e o backup dos after-images será gravado no diretório /simula/backupai.

O script backup-bd.sh deverá conter a instrução !#/bin/bash para evitar problemas com a execução em background. Em seguida ele define variáveis de ambiente caso elas não sejam padrão em seu ambiente.

  [backup-bd.sh]
    #!/bin/bash
    export DLC=/usr/dlc102b
    export PATH=$DLC:$DLC/bin:$PATH
    export aifull=OK
    ...

O código a seguir faz o backup de todos os extents full do banco de dados, marcando o horário de cópia e a ordem do extent. Lembrando que o banco pode ter mais de um extent full, por isso o teste tem que estar em uma estrutura de repetição. Como o Linux/Unix suporta função, já colocamos todos os comandos dentro da função para ser chamado posteriormente para limpar o extent do after-image depois do backup

  [backup-bd.sh]
    ...
    function testefull {
      export horai=`date +%Y%m%d%H%M`
      export arqai=`_rfutil $1 -C aimage extent full`
      if [ -s "$arqai" ]; then
        export seqai=`_rfutil $1 -C aimage query sequence by name $arqai`
        _rfutil $1 -C aimage extract -a $arqai -o $3/$1-$horai-$seqai.bka >> $1.log
        _rfutil $1 -C aimage extent empty $arqai >> $1.log
      else
        export aifull=NOK
      fi
    }
    while [ $aifull == OK ]; do
      testefull $1 $2 $3
    done
    ...

After-images copiados, o próximo passo é o backup do banco de dados.

  [backup-bd.sh]
    ...
    probkup online $1 $2/$1-$horai.bkp >> $1.log
    ...

Para concluir, faça o backup das extensões de after-images que foram trocadas pelo backup online. Como a função já está pronta, basta chamá-la novamente.

  [backup-bd.sh]
    ...
    testefull $1 $2 $3

Esses scripts permitirão backup completo de todos os banco, assim como backup das extensões de after-image. Também direcionei o log dos comando Progress OpenEdge para o arquivo com o mesmo nome do banco, extensão log.

Categorias: Banco de dados | Progress

Tags: , , ,

Comentar

biuquote
  • Comentário
  • Pré-visualização
Loading

Acesso LogMeIn

Informe o código PIN: