sexta-feira, 7 de novembro de 2008

Efetuar backup de DB2 via Agent / OnLine

Pré-reqs:

a-) Política do tipo "DB2" criada
b-) Política do tipo "Standard" criada, com um Schedule do tipo "User Archive"
c-) Instalação do agente do DB2 no cliente desejado

1-) Vá até o $INSTHOME e crie o um arquivo db2.conf. Este arquivo deve ser world-readable e deve conter o seguinte:

# Backup da Base# Substitua pelo nome do db
DATABASE mydbOBJECTTYPE DATABASE
# Substitua pelo nome da politica criada no NBU (ATENÇÃO!!! - O tipo da politica DEVE SER "DB2") POLICY mypolicy # Substitua pelo nome do schedule criado SCHEDULE Default-Application-Backup ENDOPER

# Backup dos archives# Substitua pelo nome do db
DATABASE mydbOBJECTTYPE ARCHIVE
# Substitua pelo nome da politica criada no NBU (ATENÇÃO!!! - O tipo da politica DEVE SER "Standard") POLICY myarchpolicy # ATENÇÃO !!! - Substitua pelo nome do schedule "User Archive" criado SCHEDULE User #ARCFUNC SAVE # Utilze sempre a opcao copy para o backup dos archives ARCFUNC COPY # O ARCDIR e O RETDIR sao diretorios temporarios para onde são copiados os # archives antes do backup ARCDIR /mytempdir/ RETDIR /mytempdir/ ENDOPER
2-) Crie um link do programa user-exit, localizado no diretório /usr/openv/netbackup/bin, para o diretório correspondente no db2:
Ex:
ln -s /usr/openv/netbackup/bin/db2uext2.64 /db2/myinst/
3-) Peça para o dba db2 habilitar o user-exit na base de dados. (Esse procedimento envolve o shutdown da base).
4-) Configure o script de backup e o inclua o path completo dele na política criada no passo a-).
Exemplo:
#!/bin/sh
#bcpyrght
#***************************************************************************
#* $VRTScprght: Copyright 1993 - 2003 VERITAS Software Corporation, All Rights Reserved $ *
#***************************************************************************
#ecpyrght

echo "DB2_CLIENT = $DB2_CLIENT"
echo "DB2_SERVER = $DB2_SERVER"
echo "DB2_POLICY = $DB2_POLICY"
echo "DB2_SCHED = $DB2_SCHED"
echo "DB2_FULL = $DB2_FULL" # Is 1 if Full backup scheduled
echo "DB2_CINC = $DB2_CINC" # Is 1 if Cumulative incremental scheduled
echo "DB2_INCR = $DB2_INCR" # Is 1 if Differential incremental scheduled

#
# Mude o MY_LIB de acordo com o seu host:
# Solaris or Linux 32-bit = nbdb2.so
# Solaris 64-bit = nbdb2.so64
# AIX or HPUX 32-bit = nbdb2.sl
# AIX or HPUX 64-bit = nbdb2.sl64
#

MY_LIB=/usr/openv/netbackup/bin/nbdb2.sl64

#
# Mude a variavel MY_DB2 de ascordo com o nome da instancia.
#

MY_DB2=myinst

if [ "$DB2_FULL" = "1" ] ; then
MY_SCHED=""
elif [ "$DB2_CINC" = "1" ] ; then
MY_SCHED="INCREMENTAL"
elif [ "$DB2_INCR" = "1" ] ; then
MY_SCHED="INCREMENTAL DELTA"
else
MY_SCHED=""
fi
CMD_LINE="db2 BACKUP DATABASE $MY_DB2 online LOAD $MY_LIB OPEN 4 SESSIONS BUFFER 1024"

#
# Altere o MY_USER para o usuário usado pelo db2 #
MY_USER=mydb2user
echo "Executing: $CMD_LINE"
su - $MY_USER -c "$CMD_LINE"
RETURN_STATUS=$?
# Return 0 for success, non-zero for errors
exit $RETURN_STATUS

5-) Altere o crontab do root na maquina cliente e insira a linha para o backup periodico dos archives, utilizando a politica e schedule criados no passo b-)
Ex:
0 6 * * * /usr/openv/netbackup/bin/bparchive -p myarchpolicy -s User /db2/B01/log_archive/B01/NODE0000/* 2>/dev/null
ATENÇÃO: Observe o asterisco no final do path do diretório de logs, ele garante que somente os logs becapeados serão deletados após o backup.

Nenhum comentário: