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 隧道备份的主要内容,如果未能解决你的问题,请参考以下文章