Postgres:在特定时间范围内通过 ssh 进行复制

Postgres:在特定时间范围内通过 ssh 进行复制

有人能帮我解决最多的通用稳定复制机制对于 postgres,我可以在一天中的特定时间运行(知道这听起来很奇怪),可以通过 ssh 运行的 postgres?

通过 ssh 是因为我的机器在 linode 上,只有一个网络接口 - 公共的,我不想暴露端口

答案1

我使用从 crontab 启动的脚本:该脚本创建到远程 postgres 主机的 ssh 隧道,使用本地 psql 二进制文件启动到远程 postgres 数据库的会话,然后在完成后终止该隧道。

例如:

# $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 数据库完全相同的版本。

答案2

你也可以看看。我们使用它来连续复制 postgres 数据库,如果您保持 ssh 隧道(或 stunnel)处于打开状态,则可以在传输过程中对数据进行加密

相关内容