sexta-feira, 26 de junho de 2015

Replicação Postgresql utilizando SLONY (Instalação)

Necessitei trabalhar com replicação de banco de dados pensando em alta disponibilidade de acesso aos dados. O local onde o servidor de dados esta instalado não possui um no break. Tenho que fazer uma migração para outro local, porém como todos os sistemas acessam este banco de dados, não conseguia pensar em uma estratégia para esta migração.

A solução que implantamos faz o seguinte:

 
As minhas informações são gravadas no Banco 1. Todas as minhas aplicações estão apontando para o Banco 1. A estratégia adotada foi replicar o Banco 1 no site 1 para o Banco 2 no site 2. Tanto o banco como o ambiente do Site 2 são mais atualizados que do site 1.

Assim que as aplicações forem atualizados pode-se desligar o site 1 ou inverter a replicação.

Para replicação utilizei o Slony. A escolha do Slony aconteceu antes de entender todas as possibilidades de replicação que o Postgresql oferece.
Para instalação do Slony 2.2.4 em ambiente linux, segui a receita:

1) Baixar o Slony do site http://slony.info/downloads/, quando escrevi este post, a versão mais atualizada disponível era: slony1-2.2.4.tar.bz2.

2) Na pasta onde baixei o pacote, executei o comando:

            tar -vjxf slony1-2.2.4.tar.bz2

faz com que o pacote seja descompactado e cria uma pasta denominda: slony1-2.2.4

3) É necessário ter instalado um compilador C em sua máquina / servidor. No lugar se utilizar o configure.sh que vem na pasta slony1-2.2.4 utilize o configure.sh seguinte:


export PGMAIN=/DBA/postgresql/9.4.1

./configure \
    --prefix=$PGMAIN \
    --bindir=$PGMAIN/bin \
    --datadir=$PGMAIN/share \
    --libdir=$PGMAIN/lib \
    --with-pgconfigdir=$PGMAIN/bin \
    --with-pgbindir=$PGMAIN/bin \
    --with-pgincludedir=$PGMAIN/include \
    --with-pglibdir=$PGMAIN/lib \
    --with-pgsharedir=$PGMAIN/share


onde na variável PGMAIN deve ser inserida a pasta onde esta sua instalação do POSTGRESQL.

Execute do arquivo configure.sh.

Caso você receba a mensagem:

checking PostgreSQL for thread-safety... configure: error: PQisthreadsafe test failed - PostgreSQL needs to be compiled with --enable-thread-safety


Procure em sua máquina, a pasta onde esta instalado o arquivo: libpq-fe.h

find / -name libpq-fe.h
/usr/include/postgresql/libpq-fe.h

Coloque o resultado no arquivo configure.sh na variável with-pgincludedir

export PGMAIN=/DBA/postgresql/9.4.1

./configure \
    --prefix=$PGMAIN \
    --bindir=$PGMAIN/bin \
    --datadir=$PGMAIN/share \
    --libdir=$PGMAIN/lib \
    --with-pgconfigdir=$PGMAIN/bin \
    --with-pgbindir=$PGMAIN/bin \
    --with-pgincludedir=/usr/include/postgresql \
    --with-pglibdir=$PGMAIN/lib \
    --with-pgsharedir=$PGMAIN/share


Execute novamente o arquivo configure.sh

4) Em seguida execute os comandos:

make all

make install

5) Esta instalado o Slony em uma máquina.É necessário repetir procedimento para cada servidor de banco de dados.

6) Para entender como funciona o Slony utilizei o tutorial que encontrei no site:

http://slony.info/documentation/2.2/tutorial.html

Infelizmente tem alguns erros neste tutorial que podem ser resolvidos lendo os arquivos de LOG gerados.