database - 内存不足,无法从 pg_dump 导入新数据库。 psql cloned_db < db_backup.sql

标签 database postgresql

通过以下方式备份远程数据库

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/

相关文章:

sql - 多对多数据库设计问题

c# - 在 LINQ-to-SQL 中使用跨上下文连接

php - 哪个查询会更优化?

sql - 递归 SQL 语句 (Postgresql) - 简化版

ruby-on-rails - 如何通过检查 Rails 来防止并发请求偷偷摸摸?

mysql - postgresql 中的 DATE_FORMAT

postgresql - 为什么 Copy 或\copy 在 Postgresql 中对我不起作用?

postgresql - 在 PostgreSQL 中,在授予序列时,我可以只授予 USAGE 而不是同时授予 SELECT、USAGE 吗?

来自 3 个表的 PostgreSQL JOIN 数据

sql - 将架构添加到postgresql中的路径