Назад | Перейти на главную страницу

Postgres: репликация по ssh в определенные периоды времени

Может ли кто-нибудь помочь мне больше всего общий стабильный механизм репликации для postgres, который я могу запускать в определенное время дня (знаете, это звучит странно), postgres, который может работать через ssh?

Over ssh - это потому, что мои машины подключены к сети только с одним сетевым интерфейсом - общедоступным, и я не хочу открывать порт

Я использую сценарий, запущенный из crontab: этот сценарий создает туннель ssh к удаленному хосту postgres, запускает сеанс с удаленной базой данных postgres, используя локальный двоичный файл psql, а затем закрывает туннель после завершения.

Например:

# $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}

Прежде чем пробовать эту технику, я предлагаю убедиться, что локальный клиент psql и удаленная база данных postgres имеют одинаковую версию.

Вы также можете посмотреть pgpool. Мы используем его для непрерывной репликации базы данных postgres, и если вы поддерживаете ssh-туннель (или stunnel), вы можете зашифровать данные во время передачи.