想象一下这种情况。我有一台只有 1 GB 可用空间的服务器。 Postgres 数据库占用了其中的大约 600MB(根据 SELECT pg_size_pretty(pg_database_size('dbname'));
),其他东西又占用了 300MB,所以我只有 100MB 的可用空间。
我想转储这个数据库(移动到另一台服务器)。
pg_dump dbname > dump
的简单解决方案自然会失败并出现配额超出错误。
我尝试先用 VACUUM FULL
压缩它(不确定它是否有助于转储大小,但无论如何),但由于磁盘限制也失败了。
我可以通过 SSH 访问此服务器。所以我想知道:有没有一种方法可以通过 ssh 将 pg_dump
的输出通过管道传输到我的家用机器上?
(Ubuntu同时安装在服务器和本地机器上。)
也欢迎提出其他建议。
最佳答案
当然有。
在你的本地机器上做这样的事情:
ssh -L15432:127.0.0.1:5432 user@remote-machine
然后在你的本地机器上你可以做这样的事情:
pg_dump -h localhost -p 15432 ...
这会建立一条从本地机器上的端口 15432 到远程机器上的 5432 的隧道。假设权限等允许您连接,您就可以开始了。
关于postgresql - 空间紧张时转储 Postgres 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33177152/