pgAdmin3 通过 ssh 隧道备份

Posted

技术标签:

【中文标题】pgAdmin3 通过 ssh 隧道备份【英文标题】:pgAdmin3 backup over ssh tunnel 【发布时间】:2015-11-30 15:03:14 【问题描述】:

我在 amazone ec2 上有一个正在运行的 postgresql 服务器。我通过 ssh 隧道将 pgAdmin3 连接到它,该隧道直接在我的 mac 的 pgAdmin3 中配置。 我可以进行查询并查看完整的架构,这没问题。

如果我尝试(从 pgAdmin3 GUI)备份数据库,那么我会得到(即使连接实际上是打开并正常工作)以下异常:

/Applications/pgAdmin3.app/Contents/SharedSupport/pg_dump --host localhost --port 5432 --username "MY_USERNAME" --role "MY_ROLE" --no-password  --format custom --encoding UTF8 --verbose --file "/Users/XXX/filename" "DATABASENAME"
pg_dump: [archiver (db)] connection to database "DATABASENAME" failed: could not connect to server: Connection refused
	Is the server running on host "localhost" (::1) and accepting
	TCP/IP connections on port 5432?
could not connect to server: Connection refused
	Is the server running on host "localhost" (127.0.0.1) and accepting
	TCP/IP connections on port 5432?

Process ended with Exitcode 1.

知道为什么后台的 pg_dump 不能通过 ssh 隧道连接吗?

【问题讨论】:

我也想知道为什么 pgAdmin 不支持这个功能。这是一个已知的错误吗? 【参考方案1】:

在我找到解决方案之前的替代方法是通过终端实现

ssh <HOST> "pg_dump -U <USERNAME> -W -h localhost -F c <DATABASENAME> | gzip -c" > ./backup.sql.gz

【讨论】:

【参考方案2】:

这条线对我有用:

ssh -o "Compression=no" server_adress "pg_dump -Z9 -Fc -U postgres db_name" > backup_name.dump

【讨论】:

以上是关于pgAdmin3 通过 ssh 隧道备份的主要内容,如果未能解决你的问题,请参考以下文章

SSH隧道及其使用

无法通过 SSH 隧道克隆 git

PyCharm SSH 隧道通过本地 ssh 配置 (~/.ssh/config)

DBeaver 通过 SSH 隧道连接

通过 SSH 隧道访问端点

PostgreSQL 通过 SSH 隧道