Procedimento de backup de failover do Oracle RAC

3

Temos o banco de dados Oracle 11gR2 RAC em dois nós. Também temos um script de backup do RMAN que funciona bem, usando um banco de dados do catálogo de recuperação que está localizado em uma cidade a 20 km do data center. O script para backup de banco de dados funciona bem e é iniciado a partir do trabalho crontab ou do dbconsole do Oracle (por enquanto ele trabalha a partir do crontab). Um procedimento de recuperação é verificado e tudo está funcionando corretamente.

O problema é que o script é executado a partir do primeiro nó no cluster e, se o nó estiver desativado, o backup não poderá ser executado. Como podemos garantir que nosso roteiro tem uma versão de backup de failover. Também tentamos fazer o backup no dbconsole, mas isso só funciona se o nó do qual iniciar o trabalho foi iniciado.

Essencialmente, a questão é "Como garantir que nosso backup funcione, se os dois nós estão ativos ou não"

    
por Predrag Simović 22.08.2011 / 22:32

2 respostas

0

Conecte-se ao banco de dados por meio de um serviço de banco de dados. O serviço deve ser gerenciado pelo pool de servidores e ambos os nós devem fazer parte do pool. Em seguida, o serviço é sempre oferecido e o script será executado se qualquer um dos dois nós estiver ativo. O serviço pode ser definido com o comando srvctl.

    
por 02.09.2011 / 05:17
0

Em um script RMAN simples e bem escrito, não há nada que impeça que ele seja usado em uma instância diferente do mesmo banco de dados, então acho que a questão é realmente se livrar de um único ponto de falha (SPOF) de invocação de tal script RMAN.

Com o crontab scheduling, para evitar o SPOF você precisa ter dois (ou mais) crontabs.

A maneira grosseira é sempre executar o backup em cada nó, mas isso desperdiça tempo e recursos.

Melhor solução é ter um script personalizado que execute o backup no primeiro nó sempre, e no segundo nó somente quando ele detectar via crsstat que o primeiro nó é OFFLINE.

Se você é bom em scripts, eu organizo isso como (com o perdão do pseudocódigo):

this_host = hostname -s
alphabetical_good_hosts = ' crsstat -t | grep 'inst *ONLINE *ONLINE' | cut the hostname | sort '
if this_host != first_element_of( alphabetical_good_hosts ) ; then
    echo Silently exiting, we are not the preferred node for backup
    exit 0
endif
rman target / catalog someone@rman
    
por 02.12.2011 / 23:51