通过以下方式备份远程数据库
pg_dump dbname | gzip > filename.gz
创建了一个我想导入的新数据库
CREATE DATABASE new_clone;
尝试通过以下命令导入新数据库:
gunzip -c /path/to/backup/filename.sql.gz | psql new_clone
工作正常,导入了部分数据库,但遇到错误
out of memory
没有其他信息...大多数表和模式都出现了,但我无法解决这个问题。
我试过做一个简单的
pg_dump dbname > filename
和一个
psql dbname < infile
试过不压缩,也失败了。 我的猜测是数据库中的 blob 太大了吗?有没有办法跳过导致错误的 blob?
数据库大小为 10GB 未压缩,2.2GB 压缩。我有 135GB 可用磁盘空间和 32GB 内存。运行 ubuntu 14.04,postgres v 9.6.2
感谢任何帮助。谢谢。
最佳答案
我有同样的问题。经过一点挖掘,我发现这不是 psql 问题,而是 sdin:将 COPY ... FROM stdin
更改为 COPY ... from '/path/to/file/with.dump' 后
一切都变好了。因此,当您尝试通过标准输入、恕我直言、操作系统而不是 psql 提供 psql 时,尝试将所有转储加载到内存中,并且由于转储比内存进程可以拥有的更大,您会遇到错误。
PS 我很抱歉我的英语不好,它不是我的母语。
关于database - 内存不足,无法从 pg_dump 导入新数据库。 psql cloned_db < db_backup.sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42287825/