Postgres: Replicando por ssh em intervalos de tempo específicos

2

Alguém pode me ajudar com o mecanismo de replicação estável mais comum para postgres que eu posso rodar em horários específicos de um dia (sei que isso soa estranho) postgres que podem rodar sobre o ssh?

Sobre o ssh é porque minhas máquinas estão no linode com apenas uma interface de rede - pública e eu não quero expor a porta

    
por Quintin Par 22.08.2012 / 14:21

2 respostas

4

Eu uso um script iniciado a partir do crontab: este script cria um túnel ssh para o host postgres remoto, inicia uma sessão no banco de dados postgres remoto usando o binário local do psql e depois mata o túnel uma vez feito.

Por exemplo:

# $REMOTE is the hostname of the remote postgres server
# this tunnel maps the local port 50432 to the remote port 5432 where the
#  remote postgres instance is listening
/usr/bin/ssh -nNT postgres@${REMOTE} -L 50432:localhost:5432 &
TUNNELPID=$!

# wait a little for the tunnel to establish itself
sleep 5

# execute the statements in load.sql against the remote database 'remotepgdb'
/usr/local/pgsql/bin/psql -q -h localhost -p 50432 -U remotepguser remotepgdb < ${SCRIPT_PATH}/load.sql

# kill the ssh tunnel
/usr/bin/kill ${TUNNELPID}

Antes de tentar esta técnica, sugiro que o cliente local do psql e o banco de dados remoto do postgres estejam exatamente na mesma versão.

    
por 22.08.2012 / 15:20
2

Você também pode dar uma olhada em pgpool . Nós o usamos para replicação contínua de um banco de dados postgres, e se você mantiver um túnel ssh (ou stunnel), você pode ter os dados criptografados durante a transferência

    
por 23.08.2012 / 11:56