postgresql - 空间紧张时转储 Postgres 数据库?

标签 postgresql ssh dump

想象一下这种情况。我有一台只有 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/

相关文章:

正则表达式在 Postgresql 中查找完整的单词

linux - 无法允许 jenkins 对 shell 脚本进行 sudo 访问

ienumerable - 如何在 Linqpad 的 IEnumerable 上转储正常属性

.net - 使用 WinDbg 分析 .NET 转储

python - SQLAlchemy:查找数组列之间的差异

c# - 使用 ROW_NUMBER() 和 PARTITION BY 的复杂 LINQ 查询的解决方案

javascript - 使用 Promises 处理来自 ssh2 的成功/错误响应

sql - postgresql 转储文件中的 "\."是什么?

node.js - docker-compose ECONNREFUSED 用于 nodeJS 上的 Postgres

SSH 到 EC2 但权限被拒绝(公钥)